# HG changeset patch
# User Kai T. Ohlhus
# Date 1638971004 -32400
# Node ID 86ddba86efbedf4859eaaf291e17776c25e0086b
# Parent 7ecd07721cca220a962e9b528d420c54fb288802
build: clean restructuring of etc/NEWS and related files.
Bundling previous attempts in a clean fashion.
diff -r 7ecd07721cca -r 86ddba86efbe Makefile.am
--- a/Makefile.am Tue Dec 07 16:20:15 2021 +0100
+++ b/Makefile.am Wed Dec 08 22:43:24 2021 +0900
@@ -145,13 +145,13 @@
BUGS \
ChangeLog \
HG-ID \
- INSTALL.OCTAVE
+ INSTALL.OCTAVE \
+ NEWS
EXTRA_DIST += \
CITATION \
COPYING \
INSTALL \
- NEWS \
README \
octave.doap \
run-octave.in \
@@ -326,9 +326,7 @@
.gdbinit
MAINTAINERCLEANFILES += \
- $(BUILT_DISTFILES) \
- ChangeLog \
- HG-ID
+ $(BUILT_DISTFILES)
CONFIG_FILES = @ac_config_headers@ @ac_config_files@
@@ -393,6 +391,10 @@
.gdbinit: etc/gdbinit
$(AM_V_GEN)$(gdbinit-install-rule)
+NEWS: etc/NEWS.$(OCTAVE_MAJOR_VERSION).md
+ $(AM_V_GEN)cp $< $@
+.PHONY: NEWS
+
define changelog-from-hg-log
rm -f $@-t && \
if [ -d $(srcdir)/.hg ]; then \
diff -r 7ecd07721cca -r 86ddba86efbe NEWS
--- a/NEWS Tue Dec 07 16:20:15 2021 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,409 +0,0 @@
-Summary of important user-visible changes for version 7 (yyyy-mm-dd):
-----------------------------------------------------------------------
-
-### General improvements
-
-- Many functions in Octave can be called in a command form---no
-parentheses for invocation and no return argument assignment---or in a
-functional form---parentheses and '=' for assignment of return values.
-
- **Command Form Example**
-
- `mkdir new_directory`
-
- **Function Form Example**
-
- `status = mkdir ("new_directory")`
-
- Octave now handles errors that occur in a consistent manner. If
- called in command form and there is a failure, an error is thrown
- and a message printed. If called in functional form, no error or
- message is printed and the failure is communicated to the programmer
- via the output status variable.
-
- The following list of functions have been modified.
-
- * `copyfile`
- * `fcntl`
- * `fileattrib`
- * `kill`
- * `link`
- * `mkfifo`
- * `movefile`
- * `rename`
- * `rmdir`
- * `symlink`
- * `unlink`
-
-- Calling a user-defined function with too many inputs or outputs is now
-an error. The interpreter makes this check automatically. If a
-function uses varargin then the check is skipped for function inputs,
-and if a function uses varargout then the check is skipped for function
-outputs. Input validation for functions typically begins with checking
-that the number of inputs and outputs match expectations. Existing code
-can be simplified by removing these checks which are now done by the
-interpreter. Typically, code blocks like the following can simply be
-deleted.
-
- ## Checking number of inputs
- if (nargin > 2)
- print_usage ();
- endif
-
- ## Checking number of outputs
- if (nargout > 1)
- print_usage ();
- endif
-
-- Binary and hexadecimal constants like `0b101` and `0xDEADBEEF` now
-create integers (unsigned by default) with sizes determined from the
-number of digits present. For example, `0xff` creates a `uint8` value
-and `0xDEADBEEF` creates a `uint64` value. You may also use a suffix of
-the form `u8`, `u16`, `u32`, `u64`, `s8`, `s16`, `s32`, or `s64` to
-explicitly specify the data type to use (`u` or `s` to indicate unsigned
-or signed and the number to indicate the integer size).
-
- Binary constants are limited to 64 binary digits and hexadecimal
-constants are limited to 16 hexadecimal digits with no automatic
-rounding or conversion to floating point values. Note that this may
-cause problems in existing code. For example, an expression like
-`[0x1; 0x100; 0x10000]` will be uint8 (because of the rules of
-concatenating integers of different sizes) with the larger values
-truncated (because of the saturation semantics of integer values). To
-avoid these kinds of problems either: 1) declare the first integer to be
-of the desired size such as `[0x1u32; 0x100; 0x10000]`, or 2) pad
-constants in array expressions with leading zeros so that they use the
-same number of digits for each value such as
-`[0x00_00_01; 0x00_01_00; 0x01_00_00]`.
-
-- The increment and decrement operators `++` and `--` must "hug" their
-corresponding variables. In previous versions of Octave, whitespaces
-between these operators and the variable they affect were allowed. That
-is no longer the case.
-
-- The `mldivide` function (i.e., the `\` operator) now uses an LU
-decomposition to solve nearly singular full square matrices. This is
-Matlab-compatible and yields results which more nearly minimize `norm
-(A*x - b)`. Previously, Octave computed a minimum-norm solution.
-
-- The `factor` function has been overhauled for speed. For large
-inputs > 1e14, it can be up to 10,000 times faster.
-
-- The `isprime` function uses a new primality testing algorithm
-that is up to 50,000 times faster for inputs > 1e14.
-
-- The `betainc` function now calculates an exact output for the
-important special cases where a or b are 1.
-
-- The `whos` function now displays an additional attribute 's' when
-the variable is a sparse type.
-
-- As part of GSoC 2020, Abdallah K. Elshamy implemented the
-`jsondecode` and `jsonencode` functions to read and write JSON data.
-
-- As part of GSoC 2021, Abdallah K. Elshamy implemented the
-`jupyter_notebook` classdef class. This class supports running and
-filling Jupyter Notebooks using the Octave language kernel from Octave
-itself. Making the evaluation of long-running Jupyter Notebooks on a
-computing server without permanent browser connection possible.
-
-- By default, the history file is now located at $DATA/octave/history,
-where $DATA is a platform dependent location for (roaming) user data
-files (e.g., ${XDG_DATA_HOME} or, if that is not set, ~/.local/share on
-Unix-like operating systems or %APPDATA% on Windows).
-
-- For Octave on Windows OS, the minimum required version of the Windows
-API is now 6.1 (Windows 7 or newer).
-
-- The non-re-entrant version of the QHull library "libqhull" was
-deprecated upstream. Octave now (optionally) requires the re-entrant
-version of that library "libqhull_r" instead.
-
-- Octave's libraries are now built using symbol visibility by default.
-That means that less symbols are exported from these libraries.
-Configure with `--disable-lib-visibility-flags` to export all symbols
-(as in previous versions).
-
-- Octave's build system no longer appends "++" to the end of the
-"magick++" library name (set with the `--with-magick=` configure flag).
-The real name of the "magick++" library (including any potentially
-trailing "++") needs to be set in that option now.
-
-- The `pkg update` command now accepts options that are passed to `pkg
-install` for each updated package. Specifying @option{-local} or
-@option{-global} will restrict update checks to local or global
-installed packages, respectively.
-
-### Graphical User Interface
-
-- The graphical user interface is now available in Hungarian and
-Turkish.
-
-- In debug mode, symbol values are now shown in tooltips when hovering
-variables in the editor panel.
-
-- The "Disable global shortcuts when Command Window has focus" GUI
-preference under the Shortcuts tab is now disabled by default. This
-option disables keyboard shortcuts to avoid interference with readline
-key strokes in the Command Window. Unlike versions prior to Octave 7,
-this preference now also affects the Ctrl-C/V shortcuts for copy/paste.
-
-### Graphics backend
-
-- Support for Qt4 for both graphics and the GUI has been removed.
-
-- If a working LaTeX tool chain is found on the path, including `latex`,
-`dvipng`, and `dvisvgm` binaries, then text strings can now be rendered
-properly when using the `"latex"` value for the text objects'
-`"interpreter"` property and axes objects' `"ticklabelinterpreter"`.
-Type `doc "latex interpreter"` for further info.
-
-- The `"Marker"` property for plot objects now accepts `|` which draws
-a vertical line or `_` which draws a horizontal line.
-
-- The `FMT` format argument for plot commands now accepts long forms for
-color names which may be more understandable than the existing
-one-letter codes. For example, the RGB value `[0 0 0]` can now be
-specified by `"black"` in addition to `"k"`.
-
-- The color graphics properties, for example `"EdgeColor"` or
-`"FaceColor"`, now accept HTML specifications. An HTML specification is
-a string that begins with the character '#' and is followed by either 3
-or 6 hexadecimal digits. For example, magenta which is 100% red and
-blue values can specified by `"#FF00FF"` or `"#F0F"`.
-
-- The additional property `"contextmenu"` has been added to all graphics
-objects. It is equivalent to the previously used `"uicontextmenu"`
-property which is hidden now.
-
-- `uicontrol` objects now fully implement the `"Off"` and `"Inactive"`
-values of the `"Enable"` property. When the value is `"Off"`, no
-interaction with the object occurs and the `uicontrol` changes color
-(typically to gray) to indicate it is disabled. When the value is
-`"Inactive"`, the object appears normally (no change in color), but it
-is not possible to change the value of the object (such as modifying
-text in an `Edit` box or clicking on a `RadioButton`).
-
-- The `"ListBoxTop"` property for `uicontrol` objects has been
-implemented for `set` commands.
-
-- The `Title` property for print formats such as PDF or SVG is now set
-to the title displayed on the figure window which contains the plot.
-
-- Additional properties have been added to the `axes` graphics object:
- * `"alphamap"` (not yet implemented)
- * `"alphascale"` (not yet implemented)
- * `"colorscale"` (not yet implemented)
- * `"fontsizemode"` (not yet implemented)
- * `"innerposition"` (equivalent to `"position"`)
- * `"interactions"` (not yet implemented)
- * `"layout"` (not yet implemented)
- * `"legend"` (not yet implemented)
- * `"nextseriesindex"` (read-only, used by `scatter`
- graphics objects)
- * `"positionconstraint"` (replacement for `"activepositionproperty"`
- which is now a hidden property. No plans for removal.)
- * `"toolbar"` (not yet implemented)
- * `"xaxis"` (not yet implemented)
- * `"yaxis"` (not yet implemented)
- * `"zaxis"` (not yet implemented)
-
-### Matlab compatibility
-
-- The function `griddata` now implements the `"v4"` Biharmonic Spline
-Interpolation method. In adddition, the function now accepts 3-D inputs
-by passing the data to `griddata3`.
-
-- Coordinate transformation functions `cart2sph`, `sph2cart`,
-`cart2pol`, and `pol2cart` now accept either row or column vectors for
-coordinate inputs. A single coordinate matrix with one variable per
-column can still be used as function input, but a single output variable
-will now contain just the first output coordinate, and will no longer
-return the full output coordinate matrix. Output size matches the size
-of input vectors, or in the case of an input matrix will be column
-vectors with rows corresponding to the input coordinate matrix.
-
-- The function `dec2bin` and `dec2hex` now support negative numbers.
-
-- The function `factor` now supports uint64 inputs larger than
-`flintmax`.
-
-- The function `primes` now supports char inputs.
-
-- The functions `quantile` and `prctile` now permit operating on
-dimensions greater than `ndims (x)`.
-
-- The function `iqr` now uses Matlab compatible interpolation for
-quantile values. The dimension input now allows a vector, "all", and
-dimensions greater than `ndims (x)`. The function also handles
-`Inf` and `NaN` input values in a Matlab-compatible manner.
-
-- The function `importdata` now produces more compatible results when
-the file contains a 2-D text matrix.
-
-- The file functions `copyfile`, `mkdir`, `movefile`, `rmdir` now return
-a logical value (true/false) rather than a numeric value (1/0).
-
-- `uimenu` now accepts property `"Text"` which is identical to
-`"Label"`. Matlab recommends using `"Text"` in new code, although there
-is no announced date for deprecating `"Label"`.
-
-- The functions `scatter` and `scatter3` now return a handle to a
-scatter graphics object. For compatibility, they return an `hggroup` of
-patch graphics objects when the `"gnuplot"` graphics toolkit is used. In
-previous versions of Octave, these functions returned an `hggroup` of
-patch graphics objects for all graphics toolkits.
-
-- The functions `bar` and `barh` now handle stacked negative bar values
-in a Matlab-compatible manner. Negative values now stack below the zero
-axis independently of a positive value bars in the same stack.
-Previously the negative bars could overlap positive bars depending on
-drawing order.
-
-- The functions `bar` and `barh` now use colors from the `"ColorOrder"`
-axes property rather than the `"Colormap"` figure property unless one
-of the histogram options (@qcode{"hist"}, @qcode{"histc"} was specified.
-
-- The function `saveas` now defaults to saving in Octave figure format
-(.ofig) rather than PDF (.pdf).
-
-- A new warning ID (`"Octave:unimplemented-matlab-functionality"`) has
-been added which prints a warning when Octave's parser recognizes valid
-Matlab code, but for which Octave does not yet implement the
-functionality. By default, this warning is enabled.
-
-- When Octave is started with the `--traditional` option for maximum
-compatibility the `print_struct_array_contents` internal variable is set
-to true.
-
-- The function `repelem` now produces a row vector output when the input is
-a scalar.
-
-- The functions `var` and `std` now accept a weight vector as input and
-compute the weigthed variance. Dimension input now allows a vector and
-the keyword "all".
-
-### Alphabetical list of new functions added in Octave 7
-
-* `cospi`
-* `getpixelposition`
-* `endsWith`
-* `fill3`
-* `jsondecode`
-* `jsonencode`
-* `jupyter_notebook`
-* `listfonts`
-* `matlab.net.base64decode`
-* `matlab.net.base64encode`
-* `memory`
-* `ordqz`
-* `rng`
-* `sinpi`
-* `startsWith`
-* `streamribbon`
-* `turbo`
-* `uniquetol`
-* `xtickangle`
-* `ytickangle`
-* `ztickangle`
-
-### Deprecated functions, properties, and operators
-
-The following functions and properties have been deprecated in Octave 7
-and will be removed from Octave 9 (or whatever version is the second
-major release after 7):
-
-- Functions
-
- Function | Replacement
- -------------------------- |----------------------------
- disable_diagonal_matrix | optimize_diagonal_matrix
- disable_permutation_matrix | optimize_permutation_matrix
- disable_range | optimize_range
-
-- Properties
-
- Object | Property | Value
- -----------------|---------------|------------
- | |
-- Operators
-
- Operator | Replacement | Description
- ---------|-------------|------------
- ** | ^ | Matrix exponent
- .** | .^ | Element-by-element exponent
- .+ | + | Element-by-element exponent
- .- | - | Element-by-element exponent
-
-- Interpreter
-
- * The use of `'...'` for line continuations *inside* double-quoted
- strings has been deprecated. Use `'\'` for line continuations
- inside strings instead.
-
- * The use of `'\'` as a line continuation *outside* of double-quoted
- strings has been deprecated. Use `'...'` for line continuations
- instead.
-
- * Any trailing whitespace after a `'\'` line continuation has been
- deprecated. Delete unnecessary trailing whitespace.
-
-
-The following functions were deprecated in Octave 6 and will be removed
-from Octave 8 (or whatever version is the second major release after 6):
-
-- Functions
-
- Function | Replacement
- -----------------------|------------------
- `runtests` | `oruntests`
-
-- The environment variable used by `mkoctfile` for linker flags is now
- `LDFLAGS` rather than `LFLAGS`. `LFLAGS` was deprecated in Octave 6,
- and a warning is now emitted if it is used, but it will continue to
- work.
-
-
-### Removed functions, properties, and features
-
-The following functions and properties were deprecated in Octave 5
-and have been removed from Octave 7.
-
-- Functions
-
- Function | Replacement
- -------------------------|------------------
- `output_max_field_width` | `output_precision`
- `is_keyword` | `iskeyword`
-
-- Properties
-
- Object | Property | Value
- -----------------|---------------|------------
- `text` | `fontangle` | `"oblique"`
- `uibuttongroup` | `fontangle` | `"oblique"`
- `uicontrol` | `fontangle` | `"oblique"`
- `uipanel` | `fontangle` | `"oblique"`
- `uitable` | `fontangle` | `"oblique"`
-
-- The prototype JIT compiler has been removed from Octave. Since it was
-first added as part of a Google Summer of Code project in 2012, no one
-has ever seriously taken on further development of it and it still does
-nothing significant. It is out of date with the default interpreter
-that walks the parse tree. Even though we have fixed the configure
-script to disable it by default, people still ask questions about how to
-build it, but it doesn’t seem that they are doing that to work on it but
-because they think it will make Octave code run faster (it never did,
-except for some extremely simple bits of code as examples for
-demonstration purposes only). The following functions related to the
-JIT compiler have also been removed: `debug_jit`, `jit_enable`,
-`jit_failcnt`, and `jit_startcnt`.
-
-### Old release news
-
-- [Octave 6.x](etc/NEWS.6)
-- [Octave 5.x](etc/NEWS.5)
-- [Octave 4.x](etc/NEWS.4)
-- [Octave 3.x](etc/NEWS.3)
-- [Octave 2.x](etc/NEWS.2)
-- [Octave 1.x](etc/NEWS.1)
diff -r 7ecd07721cca -r 86ddba86efbe bootstrap.conf
--- a/bootstrap.conf Tue Dec 07 16:20:15 2021 +0100
+++ b/bootstrap.conf Wed Dec 08 22:43:24 2021 +0900
@@ -217,9 +217,10 @@
## Check for files that automake --gnu would normally look for, except
## AUTHORS, which we autogenerate from the documentation files along
## with building the rest of Octave, and INSTALL, which is linked from
- ## gnulib/doc/INSTALL by the bootstrap script.
+ ## gnulib/doc/INSTALL by the bootstrap script. NEWS is autogenerated
+ ## from etc/NEWS.x.
- for f in NEWS README COPYING CITATION; do
+ for f in README COPYING CITATION; do
if ! test -f $f; then
echo "required file $f is missing" 2>&1
exit 1
diff -r 7ecd07721cca -r 86ddba86efbe etc/CHECKLIST
--- a/etc/CHECKLIST Tue Dec 07 16:20:15 2021 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-Things to do before making a release:
-
- * Update the version number and release date in configure.ac.
-
- * Update the OCTAVE_API_VERSION number in configure.ac.
-
- * Update version number and release year in CITATION.
-
- * Update the NEWS file. Include release date in Summary header.
-
- * Update the NEWS-.html, index.in, news.in, and download.in
- files for the web site.
-
- * Copy tarballs to ftp.gnu.org.
-
- * Post a release announcement to the help@octave.org and
- info-gnu@gnu.org lists.
-
- * Update https://wiki.octave.org/Release_History page.
diff -r 7ecd07721cca -r 86ddba86efbe etc/CHECKLIST.md
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/CHECKLIST.md Wed Dec 08 22:43:24 2021 +0900
@@ -0,0 +1,19 @@
+Things to do before making a release:
+
+ * Update the version number and release date in configure.ac.
+
+ * Update the OCTAVE_API_VERSION number in configure.ac.
+
+ * Update version number and release year in CITATION.
+
+ * Update the NEWS file. Include release date in Summary header.
+
+ * Update the NEWS-.html, index.in, news.in, and download.in
+ files for the web site.
+
+ * Copy tarballs to ftp.gnu.org.
+
+ * Post a release announcement to the help@octave.org and
+ info-gnu@gnu.org lists.
+
+ * Update https://wiki.octave.org/Release_History page.
diff -r 7ecd07721cca -r 86ddba86efbe etc/HACKING.md
--- a/etc/HACKING.md Tue Dec 07 16:20:15 2021 +0100
+++ b/etc/HACKING.md Wed Dec 08 22:43:24 2021 +0900
@@ -141,6 +141,12 @@
written a lot on the subject. See
.
+Projects
+--------
+
+A list of proposed projects is maintained at
+.
+
Bugs and patches
----------------
diff -r 7ecd07721cca -r 86ddba86efbe etc/NEWS.1
--- a/etc/NEWS.1 Tue Dec 07 16:20:15 2021 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1602 +0,0 @@
-Summary of changes for version 1.1.1 (1995-02-23):
--------------------------------------------------
-
- * New built-in variables, default_return_value and
- define_all_return_values.
-
- If define_all_return_values is set to "false", Octave does not do
- anything special for return values that are left undefined, and
- you will get an error message if you try to use them. For
- example, if the function
-
- function [x, y] = f ()
- y = 1;
- endfunction
-
- is called as
-
- octave:13> [a, b] = f ()
-
- Octave will print an error message for the attempt to assign an
- undefined value to `a'.
-
- This is incompatible with Matlab, which will define the return
- variable `x' to be the empty matrix. To get the Matlab-like
- behavior, you can set the variable define_all_return_values to
- "true" (the default is "false") and default_return_value to `[]'
- (the default). Then, any return values that remain undefined when
- the function returns will be initialized to `[]'.
-
- If the function is called without explicitly asking for an output,
- it will succeed. This behavior is compatible and unchanged from
- previous versions of Octave.
-
- * New built-in variable suppress_verbose_help_message. If set to
- "true", Octave will not add additional help information to the end
- of the output from the help command and usage messages for
- built-in commands. The default value is "false".
-
- * New built-in variable PS4 is used as the prefix of echoed input
- (enabled with the --echo-input (-x) option).
-
- * The function size() now accepts an optional second argument.
-
- * Output from `save - ...' now goes through the pager.
-
- * The break statement may also be used to exit a function, for
- compatibility with Matlab.
-
- * The directory tree for installing Octave is now closer to
- conforming with the current GNU standards.
-
- * More bug fixes.
-
-Summary of changes for version 1.1.0 (1995-01-12):
--------------------------------------------------
-
- * Octave now requires g++ 2.6.3 or later. This change is necessary
- to make template instantiations cleaner, and to avoid having to
- have special cases in the code for earlier versions of gcc.
-
- * A new data structure type has been added. The implementation uses
- an associative array with indices limited to strings, but the
- syntax is more like C-style structures. here are some examples of
- using it.
-
- Elements of structures can be of any type, including structures:
-
- octave:1> x.a = 1;
- octave:2> x.b = [1, 2; 3, 4];
- octave:3> x.c = "string";
- octave:4> x
- x =
-
-
-
- octave:5> x.a
- x.a = 1
- octave:6> x.b
- x.b =
-
- 1 2
- 3 4
-
- octave:7> x.c
- x.c = string
- octave:8> x.b.d = 3
- x.b.d = 3
- octave:9> x.b
- x.b =
-
-
-
- octave:10> x.b.d
- x.b.d = 3
-
- Functions can return structures:
-
- octave:1> a = rand (3) + rand (3) * I;
- octave:2> function y = f (x)
- > y.re = real (x);
- > y.im = imag (x);
- > endfunction
- octave:3> f (a)
- ans =
-
-
-
- octave:4> ans.im
- ans.im =
-
- 0.093411 0.229690 0.627585
- 0.415128 0.221706 0.850341
- 0.894990 0.343265 0.384018
-
- octave:5> ans.re
- ans.re =
-
- 0.56234 0.14797 0.26416
- 0.72120 0.62691 0.20910
- 0.89211 0.25175 0.21081
-
- Return lists can include structure elements:
-
- octave:1> [x.u, x.s, x.v] = svd ([1, 2; 3, 4])
- x.u =
-
- -0.40455 -0.91451
- -0.91451 0.40455
-
- x.s =
-
- 5.46499 0.00000
- 0.00000 0.36597
-
- x.v =
-
- -0.57605 0.81742
- -0.81742 -0.57605
-
- octave:8> x
- x =
-
-
-
- This feature should be considered experimental, but it seems to
- work OK. Suggestions for ways to improve it are welcome.
-
- * Octave now supports a limited form of exception handling modeled
- after the unwind-protect form of Lisp:
-
- unwind_protect
- BODY
- unwind_protect_cleanup
- CLEANUP
- end_unwind_protect
-
- Where BODY and CLEANUP are both optional and may contain any
- Octave expressions or commands. The statements in CLEANUP are
- guaranteed to be executed regardless of how control exits BODY.
-
- This is useful to protect temporary changes to global variables
- from possible errors. For example, the following code will always
- restore the original value of the built-in variable
- do_fortran_indexing even if an error occurs while performing the
- indexing operation.
-
- save_do_fortran_indexing = do_fortran_indexing;
- unwind_protect
- do_fortran_indexing = "true";
- elt = a (idx)
- unwind_protect_cleanup
- do_fortran_indexing = save_do_fortran_indexing;
- end_unwind_protect
-
- Without unwind_protect, the value of do_fortran_indexing would not
- be restored if an error occurs while performing the indexing
- operation because evaluation would stop at the point of the error
- and the statement to restore the value would not be executed.
-
- * Recursive directory searching has been implemented using Karl
- Berry's kpathsea library. Directories below path elements that
- end in // are searched recursively for .m files.
-
- * Octave now waits for additional input when a pair of parentheses
- is `open' instead of giving an error. This allows one to write
- statements like this
-
- if (big_long_variable_name == other_long_variable_name
- || not_so_short_variable_name > 4
- && y > x)
- some (code, here);
-
- without having to clutter up the if statement with continuation
- characters.
-
- * Continuation lines are now allowed in string constants and are
- handled correctly inside matrix constants.
-
- * Both `...{whitespace}\n' and `\{whitespace}\n' can be used to
- introduce continuation lines, where {whitespace} may include
- spaces, tabs and comments.
-
- * The script directory has been split up by topic.
-
- * Dynamic linking mostly works with dld. The following limitations
- are known problems:
-
- -- Clearing dynamically linked functions doesn't work.
-
- -- Dynamic linking only works with dld, which has not been ported
- to very many systems yet.
-
- -- Configuring with --enable-lite-kernel seems to mostly work to
- make nonessential built-in functions dynamically loaded, but
- there also seem to be some problems. For example, fsolve seems
- to always return info == 3. This is difficult to debug since
- GDB doesn't appear to allow breakpoints to be set inside
- dynamically loaded functions.
-
- -- Octave uses a lot of memory if the dynamically linked functions
- are compiled with -g. This appears to be a limitation with
- dld, and can be avoided by not using -g to compile functions
- that will be linked dynamically.
-
- * fft2 and ifft2 are now built-in functions.
-
- * The `&&' and `||' logical operators are now evaluated in a
- short-circuit fashion and work differently than the element by
- element operators `&' and `|'. See the Octave manual for more
- details.
-
- * Expressions like 1./m are now parsed as 1 ./ m, not 1. / m.
-
- * The replot command now takes the same arguments as gplot or
- gsplot (except ranges, which cannot be respecified with replot
- (yet)) so you can add additional lines to existing plots.
-
- * The hold command has been implemented.
-
- * New function `clearplot' clears the plot window. The name `clg'
- is aliased to `clearplot' for compatibility with Matlab.
-
- * The commands `gplot clear' and `gsplot clear' are equivalent to
- `clearplot'. (Previously, `gplot clear' would evaluate `clear' as
- an ordinary expression and clear all the visible variables.)
-
- * The Matlab-style plotting commands have been improved. They now
- accept line-style arguments, multiple x-y pairs, and other plot
- option flags. For example,
-
- plot (x, y, "@12", x, y2, x, y3, "4", x, y4, "+")
-
- results in a plot with
-
- y plotted with points of type 2 ("+") and color 1 (red).
- y2 plotted with lines.
- y3 plotted with lines of color 4.
- y4 plotted with points which are "+"s.
-
- the help message for `plot' and `plot_opt' provide full
- descriptions of the options.
-
- * NaN is now dropped from plot data, and Inf is converted to a
- very large value before calling gnuplot.
-
- * Improved load and save commands:
-
- -- The save and load commands can now read and write a new binary
- file format. Conversion to and from IEEE big and little endian
- formats is handled automatically. Conversion for other formats
- has not yet been implemented.
-
- -- The load command can now read Matlab .mat files, though it is
- not yet able to read sparse matrices or handle conversion for
- all data formats.
-
- -- The save command can write Matlab .mat files.
-
- -- The load command automatically determines the save format
- (binary, ascii, or Matlab binary).
-
- -- The default format for the save command is taken from the
- built-in variable `default_save_format'.
-
- -- The save and load commands now both accept a list of globbing
- patterns so you can easily load a list of variables from a
- file.
-
- -- The load command now accepts the option -list, for listing the
- variable names without actually loading the data. With
- -verbose, it prints a long listing.
-
- -- The load command now accepts the option -float-binary, for
- saving floating point data in binary files in single precision.
-
- * who and whos now accept a list of globbing patterns so you can
- limit the lists of variables and functions to those that match a
- given set of patterns.
-
- * New functions for manipulating polynomials
-
- compan -- companion matrix corresponding to polynomial coefficients
- conv -- convolve two vectors
- deconv -- deconvolve two vectors
- roots -- find the roots of a polynomial
- poly -- characteristic polynomial of a matrix
- polyderiv -- differentiate a polynomial
- polyinteg -- integrate a polynomial
- polyreduce -- reduce a polynomial to minimum number of terms
- polyval -- evaluate a polynomial at a point
- polyvalm -- evaluate a polynomial in the matrix sense
- residue -- partial fraction expansion corresponding to the ratio
- of two polynomials
-
- * New functions for manipulating sets
-
- create_set -- create a set of unique values
- complement -- find the complement of two sets
- intersection -- find the intersection of two sets
- union -- find the union of two sets
-
- * New elementary functions:
-
- acot acoth acsc acsch
- asec asech cot coth
- csc csch log2 sec
- sech
-
- * New special functions:
-
- beta -- beta function
- betai -- incomplete beta function
- gammai -- incomplete gamma function
-
- * New image processing functions:
-
- colormap -- set and return current colormap
- gray -- set a gray colormap
- gray2ind -- image format conversion
- image -- display an image
- imagesc -- scale and display an image
- imshow -- display images
- ind2gray -- image format conversion
- ind2rgb -- image format conversion
- loadimage -- load an image from a file
- ntsc2rgb -- image format conversion
- ocean -- set a color colormap
- rgb2ind -- image format conversion
- rgb2ntsc -- image format conversion
- saveimage -- save an image to a file
-
- * New time and date functions:
-
- tic -- set wall-clock timer
- toc -- get elapsed wall-clock time, since timer last set
- etime -- another way to get elapsed wall-clock time
- cputime -- get CPU time used since Octave started
- is_leap_year -- is the given year a leap year?
-
- * Other new functions:
-
- bug_report -- submit a bug report to the bug-octave mailing list
-
- toascii -- convert a string to a matrix of ASCII character codes
-
- octave_tmp_file -- generate a unique temporary file name
-
- undo_string_escapes -- replace special characters in a string by
- their backslash forms
-
- is_struct -- determine whether something is a structure data type
-
- feof -- check EOF condition for a specified file
- ferror -- check error state for a specified file
- fread -- read binary data from a file
- fwrite -- write binary data to a file
-
- file_in_path -- check to see if named file exists in given path
-
- kbhit -- get a single character from the terminal
-
- axis -- change plot ranges
- hist -- plot histograms
-
- diary -- save commands and output to a file
-
- type -- show the definition of a function
- which -- print the type of an identifier or the location of a
- function file
-
- isieee -- Returns 1 if host uses IEEE floating point
- realmax -- Returns largest floating point number
- realmin -- Returns smallest floating point number
-
- gcd -- greatest common divisor
- lcm -- least common multiple
-
- null -- orthonormal basis of the null space of a matrix
- orth -- orthonormal basis of the range space of a matrix
-
- fft2 -- two-dimensional fast fourier transform
- ifft2 -- two-dimensional inverse fast fourier transform
- filter -- digital filter
- fftfilt -- filter using fft
- fftconv -- convolve to vectors using fft
- sinc -- returns sin(pi*x)/(pi*x)
- freqz -- compute the frequency response of a filter
-
- * The meaning of nargin (== args.length ()) in built-in functions
- has been changed to match the meaning of nargin in user-defined
- functions.
-
- * Variable return lists. Octave now has a real mechanism for
- handling functions that return an unspecified number of values,
- so it is no longer necessary to place an upper bound on the number
- of outputs that a function can produce.
-
- Here is an example of a function that uses the new syntax to
- produce n values:
-
- function [...] = foo (n)
- for i = 1:n
- vr_val (i * x);
- endfor
- endfunction
-
- * New keyword, all_va_args, that allows the entire list of va_args
- to be passed to another function. For example, given the functions
-
- function f (...)
- while (nargin--)
- disp (va_arg ())
- endwhile
- endfunction
- function g (...)
- f ("begin", all_va_args, "end")
- endfunction
-
- the statement
-
- g (1, 2, 3)
-
- prints
-
- begin
- 1
- 2
- 3
- end
-
- all_va_args may be used more than once, but can only be used
- within functions that take a variable number of arguments.
-
- * If given a second argument, svd now returns an economy-sized
- decomposition, eliminating the unnecessary rows or columns of U or
- V.
-
- * The max and min functions correctly handle complex matrices in
- which some columns contain real values only.
-
- * The find function now handles 2 and 3 output arguments.
-
- * The qr function now allows computation of QR with pivoting.
-
- * hilb() is much faster for large matrices.
-
- * computer() is now a built-in function.
-
- * pinv() is now a built-in function.
-
- * The output from the history command now goes through the pager.
-
- * If a function is called without assigning the result, nargout is
- now correctly set to 0.
-
- * It is now possible to write functions that only set some return
- values. For example, calling the function
-
- function [x, y, z] = f () x = 1; z = 2; endfunction
-
- as
-
- [a, b, c] = f ()
-
- produces:
-
- a = 1
-
- b = [](0x0)
-
- c = 2
-
- * The shell_cmd function has been renamed to system (the name
- shell_cmd remains for compatibility). It now returns [output, status].
-
- * New built-in variable `OCTAVE_VERSION'. Also a new function,
- version, for compatibility with Matlab.
-
- * New built-in variable `automatic_replot'. If it is "true", Octave
- will automatically send a replot command to gnuplot each time the
- plot changes. Since this is fairly inefficient, the default value
- is "false".
-
- * New built-in variable `whitespace_in_literal_matrix' allows some
- control over how Octave decides to convert spaces to commas in
- matrix expressions like `[m (1)]'.
-
- If the value of `whitespace_in_literal_matrix' is "ignore", Octave
- will never insert a comma or a semicolon in a literal matrix list.
- For example, the expression `[1 2]' will result in an error
- instead of being treated the same as `[1, 2]', and the expression
-
- [ 1, 2,
- 3, 4 ]
-
- will result in the vector [1 2 3 4] instead of a matrix.
-
- If the value of `whitespace_in_literal_matrix' is "traditional",
- Octave will convert spaces to a comma between identifiers and `('.
- For example, given the matrix
-
- m = [3 2]
-
- the expression
-
- [m (1)]
-
- will be parsed as
-
- [m, (1)]
-
- and will result in
-
- [3 2 1]
-
- and the expression
-
- [ 1, 2,
- 3, 4 ]
-
- will result in a matrix because the newline character is converted
- to a semicolon (row separator) even though there is a comma at the
- end of the first line (trailing commas or semicolons are ignored).
- This is apparently how Matlab behaves.
-
- Any other value for `whitespace_in_literal_matrix' results in
- behavior that is the same as traditional, except that Octave does
- not convert spaces to a comma between identifiers and `('.
- For example, the expression
-
- [m (1)]
-
- will produce 3. This is the way Octave has always behaved.
-
- * Line numbers in error messages for functions defined in files and
- for script files now correspond to the file line number, not the
- number of lines after the function keyword appeared.
-
- * Octave now extracts help from script files. The comments must
- come before any other statements in the file.
-
- * In function files, the first block of comments in the file will
- now be interpreted as the help text if it doesn't look like the
- Octave copyright notice. Otherwise, Octave extracts the first set
- of comments after the function keyword.
-
- * The function clock is more accurate on systems that have the
- gettimeofday() function.
-
- * The standard output stream is now automatically flushed before
- reading from stdin with any of the *scanf() functions.
-
- * Expanded reference card.
-
- * The Octave distribution now includes a frequently asked questions
- file, with answers. Better answers and more questions (with
- answers!) are welcome.
-
- * New option --verbose. If Octave is invoked with --verbose and not
- --silent, a message is printed if an octaverc file is read while
- Octave is starting.
-
- * An improved configure script generated by Autoconf 2.0.
-
- * Lots of bug fixes.
-
-Summary of changes for version 1.0 (1994-02-17):
------------------------------------------------
-
- * C-style I/O functions now handle files referenced by name or by
- number more consistently.
-
-Summary of changes for version 0.83 (1994-02-13):
-------------------------------------------------
-
- * Loading global symbols should work now.
-
- * Clearing the screen doesn't reprint the prompt unnecessarily.
-
- * The operations OP for OP == +, -,
- *, or ./ no longer crash Octave.
-
- * More portability and configuration fixes.
-
-Summary of changes for version 0.82 (1994-02-08):
-------------------------------------------------
-
- * Octave now comes with a reference card.
-
- * The manual has been improved, but more work remains to be done.
-
- * The atanh function now works for complex arguments.
-
- * The asin, acos, acosh, and atanh functions now work properly when
- given real-valued arguments that produce complex results.
-
- * SEEK_SET, SEEK_CUR, and SEEK_END are now constants.
-
- * The `using' qualifier now works with gplot and gsplot when the
- data to plot is coming directly from a file.
-
- * The strcmp function now works correctly for empty strings.
-
- * Eliminated bogus parse error for M-files that don't end with `end'
- or `endfunction'.
-
- * For empty matrices with one nonzero dimension, the +, -, .*, and
- ./ operators now correctly preserve the dimension.
-
- * Octave no longer crashes if you type ^D at the beginning of a line
- in the middle of defining a loop or if statement.
-
- * On AIX systems, Back off on indexing DiagArray via Proxy class to
- avoid gcc (or possibly AIX assembler?) bug.
-
- * Various other bug and portability fixes.
-
-Summary of changes for version 0.81 (1994-01-28):
-------------------------------------------------
-
- * Octave no longer dumps core if you try to define a function in
- your .octaverc file.
-
- * Fixed bug in Array class that resulted in bogus off-diagonal
- elements when computing eigenvalue and singular value
- decompositions.
-
- * Fixed bug that prevented lsode from working on the SPARCstation,
- at least with some versions of Sun's f77. This bug was introduced
- in 0.80, when I changed LSODE to allow the user to abort the
- integration from within the RHS function.
-
- * Fixed bug that prevented global attribute of variables from being
- saved with save(), and another that prevented load() from working
- at all.
-
-Summary of changes for version 0.80 (1994-01-18):
-------------------------------------------------
-
- * I have started working on a manual for the C++ classes. At this
- point, it is little more than a list of function names. If you
- would like to volunteer to help work on this, please contact
- maintainers@octave.org.
-
- * The patterns accepted by the save and clear commands now work like
- file name globbing patterns instead of regular expressions. I
- apologize for any inconvenience this change may cause, but file
- name globbing seems like a more reasonable style of pattern
- matching for this purpose.
-
- * It is now possible to specify tolerances and other optional inputs
- for dassl, fsolve, lsode, npsol, qpsol, and quad. For each of
- these functions, there is a corresponding function X_options,
- which takes a keyword and value arguments. If invoked without any
- arguments, the X_options functions print a list of possible
- keywords and current values. For example,
-
- npsol_options ()
-
- prints a list of possible options with values, and
-
- npsol_options ("major print level", 10)
-
- sets the major print level to 10.
-
- The keyword match is not case sensitive, and the keywords may be
- abbreviated to the shortest unique match. For example,
-
- npsol_options ("ma p", 10)
-
- is equivalent to the statement shown above.
-
- * The new built-in variable save_precision can be used to set the
- number of digits preserved by the ASCII save command.
-
- * Assignment of [] now works in most cases to allow you to delete
- rows or columns of matrices and vectors. For example, given a
- 4x5 matrix A, the assignment
-
- A (3, :) = []
-
- deletes the third row of A, and the assignment
-
- A (:, 1:2:5) = []
-
- deletes the first, third, and fifth columns.
-
- * Variable argument lists. Octave now has a real mechanism for
- handling functions that take an unspecified number of arguments,
- so it is no longer necessary to place an upper bound on the number
- of optional arguments that a function can accept.
-
- Here is an example of a function that uses the new syntax to print
- a header followed by an unspecified number of values:
-
- function foo (heading, ...)
- disp (heading);
- va_start ();
- while (--nargin)
- disp (va_arg ());
- endwhile
- endfunction
-
- Note that the argument list must contain at least one named
- argument (this restriction may eventually be removed), and the
- ellipsis must appear as the last element of the argument list.
-
- Calling va_start() positions an internal pointer to the first
- unnamed argument and allows you to cycle through the arguments
- more than once. It is not necessary to call va_start() if you
- do not plan to cycle through the arguments more than once.
-
- * Recursive functions should work now.
-
- * The environment variable OCTAVE_PATH is now handled in the same
- way as TeX handles TEXINPUTS. If the path starts with `:', the
- standard path is prepended to the value obtained from the
- environment. If it ends with `:' the standard path is appended to
- the value obtained from the environment.
-
- * New functions, from Kurt Hornik (hornik@neuro.tuwien.ac.at) and
- the Department of Probability Theory and Statistics TU Wien,
- Austria:
-
- corrcoef -- corrcoef (X, Y) is the correlation between the i-th
- variable in X and the j-th variable in Y
- corrcoef (X) is corrcoef (X, X)
- cov -- cov (X, Y) is the covariance between the i-th
- variable in X and the j-th variable in Y
- cov (X) is cov (X, X)
- gls -- generalized least squares estimation
- kurtosis -- kurtosis(x) = N^(-1) std(x)^(-4) SUM_i (x(i)-mean(x))^4 - 3
- If x is a matrix, return the row vector containing
- the kurtosis of each column
- mahalanobis -- returns Mahalanobis' D-square distance between the
- multivariate samples X and Y, which must have the
- same number of components (columns), but may have
- a different number of observations (rows)
- ols -- ordinary least squares estimation
- pinv -- returns the pseudoinverse of X; singular values
- less than tol are ignored
- skewness -- skewness (x) = N^(-1) std(x)^(-3) SUM_i (x(i)-mean(x))^3
- if x is a matrix, return the row vector containing
- the skewness of each column
-
- * Errors in user-supplied functions called from dassl, fsolve,
- lsode, npsol, and quad are handled more gracefully.
-
- * Programming errors in the use of the C++ classes within Octave
- should no longer cause Octave to abort. Instead, Octave's error
- handler function is called and execution continues as best as is
- possible. This should result in eventually returning control to
- the top-level Octave prompt. (It would be nice to have a real
- exception handling mechanism...)
-
- * A number of memory leaks have been eliminated. Thanks to
- Fong Kin Fui for reporting them.
-
- * The C++ matrix classes are now derived from a generic
- template-based array class.
-
- * The readline function operate-and-get-next (from bash) is now
- available and bound to C-O by default.
-
- * Octave now uses the version of readline currently distributed with
- bash-1.13. On some systems, interactive invocations of Octave
- will now blink the cursor to show matching parens.
-
- * By default, include files are now installed in
- $prefix/include/octave instead of $prefix/include.
-
- * Octave now uses a config.h file instead of putting all defines on
- the compiler command line.
-
-Summary of changes for version 0.79 (1993-11-08):
-------------------------------------------------
-
- * New control systems functions:
-
- dgram -- Returns the discrete controllability and observability gramian.
- dlqr -- Discrete linear quadratic regulator design.
- dlqe -- Discrete linear quadratic estimator (Kalman Filter) design.
- c2d -- Convert continuous system description to discrete time
- description assuming zero-order hold and given sample time.
-
- * The max (min) functions can now return the index of the max (min)
- value as a second return value.
-
-Summary of changes for version 0.78 (1993-11-05):
-------------------------------------------------
-
- * Octave's handling of global variables has been completely
- rewritten. To access global variables inside a function, you must
- now declare them to be global within the function body. Likewise,
- if you do not declare a variable as global at the command line,
- you will not have access to it within a function, even if it is
- declared global there. For example, given the function
-
- function f ()
- global x = 1;
- y = 2;
- endfunction
-
- the global variable `x' is not visible at the top level until the
- command
-
- octave:13> global x
-
- has been evaluated, and the variable `y' remains local to the
- function f() even if it is declared global at the top level.
-
- Clearing a global variable at the top level will remove its global
- scope and leave it undefined. For example,
-
- octave:1> function f () # Define a function that accesses
- > global x; # the global variable `x'.
- > x
- > endfunction
- octave:2> global x = 1 # Give the variable `x' a value.
- octave:3> f () # Evaluating the function accesses the
- x = 1 # global `x'.
- octave:4> clear x # Remove `x' from global scope, clear value.
- octave:5> x = 2 # Define new local `x' at the top level
- x = 2
- octave:6> f # The global `x' is no longer defined.
- error: `x' undefined near line 1 column 25
- error: evaluating expression near line 1, column 25
- error: called from `f'
- octave:7> x # But the local one is.
- x = 2
-
- * The new function, `is_global (string)' returns 1 if the variable
- named by string is globally visible. Otherwise, returns 0.
-
- * The implementation of `who' has changed. It now accepts the
- following options:
-
- -b -builtins -- display info for built-in variables and functions
- -f -functions -- display info for currently compiled functions
- -v -variables -- display info for user variables
- -l -long -- display long info
-
- The long output looks like this:
-
- octave:5> who -l
-
- *** currently compiled functions:
-
- prot type rows cols name
- ==== ==== ==== ==== ====
- wd user function - - f
-
- *** local user variables:
-
- prot type rows cols name
- ==== ==== ==== ==== ====
- wd real scalar 1 1 y
-
- *** globally visible user variables:
-
- prot type rows cols name
- ==== ==== ==== ==== ====
- wd complex matrix 13 13 x
-
- where the first character of the `protection' field is `w' if the
- symbol can be redefined, and `-' if it has read-only access. The
- second character may be `d' if the symbol can be deleted, or `-'
- if the symbol cannot be cleared.
-
- * The new built-in variable ignore_function_time_stamp can be used
- to prevent Octave from calling stat() each time it looks up
- functions defined in M-files. If set to "system", Octave will not
- automatically recompile M-files in subdirectories of
- $OCTAVE_HOME/lib/VERSION if they have changed since they were last
- compiled, but will recompile other M-files in the LOADPATH if they
- change. If set to "all", Octave will not recompile any M-files
- unless their definitions are removed with clear. For any other
- value of ignore_function_time_stamp, Octave will always check to
- see if functions defined in M-files need to recompiled. The
- default value of ignore_function_time_stamp is "system".
-
- * The new built-in variable EDITOR can be used to specify the editor
- for the edit_history command. It is set to the value of the
- environment variable EDITOR, or `vi' if EDITOR is not set, or is
- empty.
-
- * There is a new built-in variable, INFO_FILE, which is used as the
- location of the info file. Its initial value is
- $OCTAVE_HOME/info/octave.info, so `help -i' should now work
- provided that OCTAVE_HOME is set correctly, even if Octave is
- installed in a directory different from that specified at compile
- time.
-
- * There is a new command line option, --info-file FILE, that may be
- used to set Octave's idea of the location of the info file. It
- will override any value of OCTAVE_INFO_FILE found in the
- environment, but not any INFO_FILE="filename" commands found in
- the system or user startup files.
-
- * Octave's Info reader will now recognize gzipped files that have
- names ending in `.gz'.
-
- * The save command now accepts regular expressions as arguments.
- Note that these patterns are regular expressions, and do not work
- like filename globbing. For example, given the variables `a',
- `aa', and `a1', the command `save a*' saves `a' and `aa' but not
- `a1'. To match all variables beginning with `a', you must use an
- expression like `a.*' (match all sequences beginning with `a'
- followed by zero or more characters).
-
- * Line and column information is included in more error messages.
-
-Summary of changes for version 0.77 (1993-10-23):
-------------------------------------------------
-
- * Improved help. The command `help -i topic' now uses the GNU Info
- browser to display help for the given topic directly from the
- Texinfo documentation.
-
- * New function: chol -- Cholesky factorization.
-
-Summary of changes for version 0.76 (1993-10-05):
-------------------------------------------------
-
- * Better run-time error messages. Many now include line and column
- information indicating where the error occurred. Octave will also
- print a traceback for errors occurring inside functions. If you
- find error messages that could use improvement, or errors that
- Octave fails to catch, please send a bug report to
- bug@octave.org.
-
- * If gplot (or gsplot) is given a string to plot, and the string
- does not name a file, Octave will pass the string along to gnuplot
- directly. This allows commands like
-
- gplot "sin (x)" w l, data w p
-
- to work (assuming that data is a variable containing a matrix of
- values).
-
- * Long options (--help, --version, etc.) are supported.
-
-Summary of changes for version 0.75 (1993-09-15):
-------------------------------------------------
-
- * The documentation is much more complete, but still could use a lot
- of work.
-
- * The history function now prints line numbers by default. The
- command `history -q' will omit them.
-
- * The clear function now accepts regular expressions.
-
- * If gplot (or gsplot) is given a string to plot, and the string
- names a file, Octave attempts to plot the contents of the file.
-
- * New functions:
-
- history:
-
- run_history -- run commands from the history list.
- edit_history -- edit commands from the history list with your
- favorite editor.
-
- linear algebra:
-
- balance -- Balancing for algebraic and generalized
- eigenvalue problems.
- givens -- Givens rotation.
- is_square -- Check to see if a matrix is square.
- qzhess -- QZ decomposition of the matrix pencil (a - lambda b).
- qzval -- Generalized eigenvalues for real matrices.
- syl -- Sylvester equation solver.
-
- control systems:
-
- is_symmetric -- Check to see if a matrix is symmetric.
- abcddim -- Check dimensions of linear dynamic system [A,B,C,D].
- is_controllable -- Check to see if [A,B,C,D] is controllable.
- is_observable -- Check to see if [A,B,C,D] is observable.
- are -- Solve algebraic Ricatti equation.
- dare -- Solve discrete-time algebraic Ricatti equation.
- lqe -- Kalman filter design for continuous linear system.
- lqr -- Linear Quadratic Regulator design.
- lyap -- Solve Lyapunov equation.
- dlyap -- Solve discrete Lyapunov equation.
- tzero -- Compute the transmission zeros of [A,B,C,D].
-
-Summary of changes for version 0.74 (1993-07-20):
-------------------------------------------------
-
- * Formal parameters to functions are now always considered to be
- local variables, so things like
-
- global x = 0
- global y = 0
- function y = f (x) x = 1; y = x; end
- f (x)
-
- result in the function returning 1, with the global values of x
- and y unchanged.
-
- * Multiple assignment expressions are now allowed to take indices,
- so things like
-
- octave:13> [a([1,2],[3,4]), b([5,6],[7,8])] = lu ([1,2;3,4])
-
- will work correctly.
-
-Summary of changes for version 0.73 (1993-07-10):
-------------------------------------------------
-
- * Saving and loading global variables works correctly now.
-
- * The save command no longer saves built-in variables.
-
- * Global variables are more reliable.
-
- * Matrices may now have one or both dimensions zero, so that
- operations on empty matrices are now handled more consistently.
-
- By default, dimensions of the empty matrix are now printed along
- with the empty matrix symbol, `[]'. For example:
-
- octave:13> zeros (3, 0)
- ans =
-
- [](3x0)
-
- The new variable `print_empty_dimensions' controls this behavior.
-
- See also Carl de Boor, An Empty Exercise, SIGNUM, Volume 25,
- pages 2--6, 1990, or C. N. Nett and W. M. Haddad, A
- System-Theoretic Appropriate Realization of the Empty Matrix
- Concept, IEEE Transactions on Automatic Control, Volume 38,
- Number 5, May 1993.
-
- * The right and left division operators `/' and `\' will now find a
- minimum norm solution if the system is not square, or if the
- coefficient matrix is singular.
-
- * New functions:
-
- hess -- Hessenberg decomposition
- schur -- Ordered Schur factorization
- perror -- print error messages corresponding to error codes
- returned from the functions fsolve, npsol, and qpsol
- (with others to possibly be added later).
-
- * Octave now prints a warning if it finds anything other than
- whitespace or comments after the final `end' or `endfunction'
- statement.
-
- * The bodies of functions, and the for, while, and if commands are
- now allowed to be empty.
-
- * Support for Gill and Murray's QPSOL has been added. Like NPSOL,
- QPSOL is not freely redistributable either, so you must obtain
- your own copy to be able to use this feature. More information
- about where to find QPSOL and NPSOL are in the file README.NLP.
-
-Summary of changes for version 0.72 (1993-06-10):
-------------------------------------------------
-
- * For numeric output, columns are now lined up on the decimal point.
- (This requires libg++-2.3.1 or later to work correctly).
-
- * If octave is running interactively and the output intended for the
- screen is longer than one page and a pager is available, it is
- sent to the pager through a pipe. You may specify the program to
- use as the pager by setting the variable PAGER. PAGER may also
- specify a command pipeline.
-
- * Spaces are not always significant inside square brackets now, so
- commands like
-
- [ linspace (1, 2) ]
-
- will work. However, some possible sources of confusion remain
- because Octave tries (possibly too hard) to determine exactly what
- operation is intended from the context surrounding an operator.
- For example:
-
- -- In the command
-
- [ 1 - 1 ]
-
- the `-' is treated as a binary operator and the result is the
- scalar 0, but in the command
-
- [ 1 -1 ]
-
- the `-' is treated as a unary operator and the result is the
- vector [ 1 -1 ].
-
- -- In the command
-
- a = 1; [ 1 a' ]
-
- the single quote character `'' is treated as a transpose operator
- and the result is the vector [ 1 1 ], but in the command
-
- a = 1; [ 1 a ' ]
-
- an error message indicating an unterminated string constant is
- printed.
-
- * Assignments are just expressions now, so they are valid anywhere
- other expressions are. This means that things like
-
- if (a = n < m) ... endif
-
- are valid. This is parsed as: compare `n < m', assign the result
- to the variable `a', and use it as the test expression in the if
- statement.
-
- To help avoid errors where `=' has been used but `==' was
- intended, Octave issues a warning suggesting parenthesis around
- assignments used as truth values. You can suppress this warning
- by adding parenthesis, or by setting the value of the new built-in
- variable `warn_assign_as_truth_value' to 'false' (the default
- value is 'true').
-
- This is also true for multiple assignments, so expressions like
-
- [a, b, c] = [u, s, v] = expression
-
- are now possible. If the expression is a function, nargout is set
- to the number of arguments for the right-most assignment. The
- other assignments need not contain the same number of elements.
- Extra left hand side variables in an assignment become undefined.
-
- * The default line style for plots is now `lines' instead of
- `points'. To change it, use the `set data style STYLE' command.
-
- * New file handling and I/O functions:
-
- fopen -- open a file for reading or writing
- fclose -- close a file
- fflush -- flush output to a file
- fgets -- read characters from a file
- frewind -- set file position to the beginning of a file
- fseek -- set file position
- ftell -- tell file position
- freport -- print a report for all open files
- fscanf -- read from a file
- sscanf -- read from a string
- scanf -- read from the standard input
-
- * New built-in variables for file and I/O functions:
-
- stdin -- file number corresponding to the standard input stream.
- stdout -- file number corresponding to the standard output stream.
- stderr -- file number corresponding to the standard error stream.
-
- The following may be used as the final (optional) argument for
- fseek:
-
- SEEK_SET -- set position relative to the beginning of the file.
- SEEK_CUR -- set position relative to the current position.
- SEEK_END -- set position relative to the end of the file.
-
- * New function: setstr -- convert vectors or scalars to strings
- (doesn't work for matrices yet).
-
- * If possible, computer now prints the system type instead of
- always printing `Hi Dave, I'm a HAL-9000'.
-
- * Octave now properly saves and restores its internal state
- correctly in more places. Interrupting Octave while it is
- executing a script file no longer causes it to exit.
-
- * Octave now does tilde expansion on each element of the LOADPATH.
-
- * A number of memory leaks have been plugged.
-
- * Dependencies for C++ source files are now generated automatically
- by g++.
-
- * There is a new command line option, -p PATH, that may be used to
- set Octave's loadpath from the command line. It will override any
- value of OCTAVE_PATH found in the environment, but not any
- LOADPATH="path" commands found in the system or user startup files.
-
- * It is now possible to override Octave's default idea of the
- location of the system-wide startup file (usually stored in
- $(prefix)/lib/octave/octaverc) using the environment variable
- OCTAVE_HOME. If OCTAVE_HOME has a value, Octave will look for
- octaverc and its M-files in the directory $OCTAVE_HOME/lib/octave.
-
- This allows people who are using binary distributions (as is
- common with systems like Linux) to install the real octave binary
- in any directory (using a name like octave.bin) and then install
- a simple script like this
-
- #!/bin/sh
- OCTAVE_HOME=/foo/bar/baz
- export OCTAVE_HOME
- exec octave.bin
-
- to be invoked as octave.
-
-
-Summary of changes for version 0.71 (1993-04-15):
-------------------------------------------------
-
- * Much improved plotting facility. With this release, Octave does
- not require a specially modified version of gnuplot, so gnuplot
- sources are no longer distributed with Octave. For a more
- detailed description of the new plotting features, see the file
- PLOTTING.
-
- * New plotting commands:
-
- plot -- 2D plots
- semilogx -- 2D semilog plot with logscale on the x axis
- semilogy -- 2D semilog plot with logscale on the y axis
- loglog -- 2D log-log plot
- mesh -- 3D mesh plot
- meshdom -- create matrices for 3D plotting from two vectors
- contour -- contour plots of 3D data
- bar -- create bar graphs
- stairs -- create stairstep plots
- polar -- 2D plots from theta-R data
- grid -- turn plot grid lines on or off
- xlabel, ylabel -- place labels on the x and y axes of 2D plots
- sombrero -- demonstrate 3D plotting
- gplot -- 2D plot command with gnuplot-like syntax
- gsplot -- 3D plot command with gnuplot-like syntax
- set -- set plot options with gnuplot syntax
- show -- show plot options with gnuplot syntax
- closeplot -- close stream to gnuplot process
- purge_tmp_files -- delete temporary files created by plot command
-
- * Other new commands:
-
- ls, dir -- print a directory listing
- shell_cmd -- execute shell commands
- keyboard -- get input from keyboard, useful for debugging
- menu -- display a menu of options and ask for input
- fft -- fast fourier transform
- ifft -- inverse fast fourier transform
-
- * Strings may be enclosed in either single or double quote
- characters. Double quote characters are not special within single
- quote strings, and single quotes are not special within double
- quote strings.
-
- * Command name completion now works for M-file names too.
-
- * Better help and usage messages for many functions.
-
- * Help is now available for functions defined in M-files. The first
- block of comments is taken as the text of the help message.
-
- * Numerous changes in preparation to support dynamic loading of
- object files with dld.
-
- * Bug fixes to make solving DAEs with dassl actually work.
-
- * The command `save file' now saves all variables in the named file.
-
- * If do_fortran_indexing is 'true', indexing a scalar with
- [1,1,1,...] (n times) replicates its value n times. The
- orientation of the resulting vector depends on the value of
- prefer_column_vectors.
-
- * Things like [[1,2][3,4]] no longer cause core dumps, and invalid
- input like [1,2;3,4,[5,6]] now produces a diagnostic message.
-
- * The cd, save, and load commands now do tilde expansion.
-
- * It's now possible to clear global variables and functions by name.
-
- * Use of clear inside functions is now a parse error.
-
-Summary of changes for version 0.70 (1993-03-08):
-------------------------------------------------
-
- * Better parse error diagnostics. For interactive input, you get
- messages like
-
- octave:1> a = 3 + * 4;
-
- parse error:
-
- a = 3 + * 4;
- ^
-
- and for script files, the message includes the file name and input
- line number:
-
- octave:1> foo
-
- parse error near line 4 of file foo.m:
-
- a = 3 + * 4;
- ^
-
- * New built-in variable PS2 which is used as the secondary prompt.
- The default value is '> '.
-
- * New file, octave-mode.el, for editing Octave code with GNU Emacs.
- This is a modified version of Matthew R. Wette's matlab-mode.el.
-
- * Better support for missing math functions.
-
- * User preferences are now cached in a global struct so we don't
- have to do a symbol table lookup each time we need to know what
- they are. This should mean slightly improved performance for
- evaluating expressions.
-
-Summary of changes for version 0.69 (1993-02-23):
-------------------------------------------------
-
- * Multiple assignments are now possible, so statements like
-
- a = b = c = 3;
- a = b = c = [1,2;3,4];
-
- or
-
- c = (a = (b = 2) * 3 + 4) * 5
-
- are legal, as are things that have even more bizarre effects, like
-
- a(4:6,4:6) = b(2:3,2:3) = [1,2;3,4];
-
- (try it).
-
- * Improved parsing of strings (but they still don't work as matrix
- elements).
-
- * An M-file may now either define a function or be a list of
- commands to execute.
-
- * Better detection and conditional compilation of IEEE functions
- isinf, finite, and isnan.
-
- * Replacements for acosh, asinh, atanh, and gamma from the BSD math
- library for those systems that don't have them.
-
-Summary of changes for version 0.68 (1993-02-16):
-------------------------------------------------
-
- * New functions:
-
- eval -- evaluate a string as a sequence of Octave commands.
- input -- print a prompt and get user input.
-
-Summary of changes for version 0.67 (1993-02-09):
-------------------------------------------------
-
- * New functions:
-
- find -- return the indices of nonzero elements.
-
- * Zero-one style indexing now works. For example,
-
- a = [1,2,3,4];
- b = a([1,0,0,1])
-
- sets b to the first and fourth elements of a.
-
- Zero-one style indexing also works for indexing the left hand side
- of an assignment. For example,
-
- a = rand (1,2;3,4);
- a([0,1],:) = [-1,-2]
-
- sets the second row of a to [-1 -2]
-
- The behavior for the ambiguous case
-
- a = [1,2,3,4];
- b = a([1,1,1,1]);
-
- is controlled by the new global variable `prefer_zero_one_indexing'.
- If this variable is equal to 'true', b will be set to [1 2 3 4].
- If it is false, b will be set to [1 1 1 1]. The default value is
- 'false'.
-
- * Using the new global variable `propagate_empty_matrices', it is
- possible to have unary and binary operations on empty matrices
- return an empty matrix. The default value of this variable is
- 'warn', so that empty matrices are propagated but you get a
- warning. Some functions, like eig and svd have also been changed
- to handle this.
-
- * Empty matrices can be used in conditionals, but they always
- evaluate to `false'. With propagate_empty_matrices = 'true', both
- of the following expressions print 0:
-
- if [], 1, else 0, end
- if ~[], 1, else 0, end
-
- * Octave no longer converts input like `3.2 i' or `3 I' to complex
- constants directly because that causes problems inside square
- brackets, where spaces are important. This abbreviated notation
- *does* work if there isn't a space between the number and the i,
- I, j, or J.
-
-Summary of changes for version 0.66 (1993-01-28):
-------------------------------------------------
-
- * Logical unary not operator (~ or !) now works for complex.
-
- * Left division works.
-
- * Right and left element by element division should work correctly
- now.
-
- * Numbers like .3e+2 are no longer errors.
-
- * Indexing a matrix with a complex value doesn't cause a core dump.
-
- * The min and max functions should work correctly for two arguments.
-
- * Improved (I hope!) configuration checks.
-
- * Octave is now installed as octave-M.N, where M and N are version
- numbers, and octave is a link to that file. This makes it
- possible to have more than one version of the interpreter installed.
-
-Summary of changes for version 0.63 (1993-01-14):
-------------------------------------------------
-
- * The reshape function works again.
-
- * Octave now converts input like `3.2i' or `3 I' or `2.3e5 j' to be
- complex constants directly, rather than requiring an expression
- like `3.3 * i' to be evaluated.
-
-Summary of changes for version 0.61 (1993-01-10):
-------------------------------------------------
-
- * Octave has been successfully compiled using gcc 2.3.3 and libg++ 2.3.
- on a 486 system running Linux.
-
- * The win_texas_lotto function is now called texas_lotto (it's a
- script file, and win_texas_lotto.m is too long for some Linux and
- System V systems).
-
-Summary of changes for version 0.57:
-------------------------------------
-
- * The C-like formatted print functions printf, fprintf, and sprintf
- finally work.
-
-Summary of changes for version 0.56:
-------------------------------------
-
- * By default, octave prints a short disclaimer when it starts.
- (You can suppress it by invoking octave with -q).
-
- * You can keep octave from reading your ~/.octaverc and .octaverc
- files by invoking it with -f.
-
- * When returning two values, eig now returns [v, d] instead of
- [lambda, v], where d is a diagonal matrix made from lambda.
-
- * The win_texas_lotto function now produces a sorted list.
-
- * New functions:
-
- expm -- matrix exponential.
- logm -- matrix logarithm.
-
-Summary of changes for version 0.55:
-------------------------------------
-
- * The following (C-style) backslash escape sequences work in quoted
- strings (useful(?) with printf()):
-
- \a bell \r carriage return
- \b backspace \t horizontal tab
- \f formfeed \v vertical tab
- \n newline \\ backslash
-
- * Use of `...' at the end of a line will allow a statement to
- continue over more than one line.
-
- * The names `inf' and `nan' are now aliases for `Inf' and `NaN',
- respectively.
-
- * New functions:
-
- casesen -- print a warning if the luser tries to turn off case
- sensitivity.
- median -- find median value.
- norm -- compute the norm of a matrix.
- sort -- sort columns.
-
- * New variable, `silent_functions'. If silent_functions == 'true',
- the results of expressions are not printed even if they are not
- followed by a semicolon. The disp() and printf() functions still
- result in output. The default value for this variable is 'false'.
-
- * New variable `return_last_value_computed'. If it is 'true',
- functions defined in script files return the last value computed
- if a return value has not been explicitly declared. The default
- value for this variable is 'false'.
-
-Summary of changes for version 0.52:
-------------------------------------
-
- * Name completion works for function and variable names currently in
- the symbol tables. Coming soon: completion for names of functions
- defined in script files but not yet compiled.
-
- * The initial value of do_fortran_indexing is now false, and the
- initial value of prefer_column_vectors is now true. Swap the
- values of these variables if you want behavior that is more like
- Matlab.
-
- * All script files check the number of input arguments before doing
- much real work.
-
- * The identifiers `i' and `j' are now also names for sqrt(-1).
- These symbols may be used for other purposes, but their original
- definition will reappear if they are cleared.
-
- * The symbol tables are now implemented with hash tables for faster
- searching.
-
- * A small amount of help is now available for most built-in
- operators, keywords and functions. Coming soon: help for script
- files.
-
- * Without any arguments, the help command now lists all known
- built-in operators, keywords and functions.
-
- * Generic parse errors are now signalled by `Eh, what's up doc?',
- which is closer to what Bugs actually says.
-
- * The who command now only prints variable names by default.
- Use the -fcn (or -fcns, or -functions) switch to print the names of
- built-in or currently compiled functions.
-
-Summary of changes for version 0.51:
-------------------------------------
-
- * Major overhaul of array indexing.
-
- * The colloc function actually works now.
-
-Summary of changes for version 0.50:
-------------------------------------
-
- * The lsode and dassl functions now return the states only,
- instead of the time and the states, so you must keep track of
- the corresponding times (this is easy though, because you have
- to specify a vector of desired output times anyway).
-
- * Solution of NLPs with NPSOL now works on the SPARC.
-
- * New keywords `endif', `endfor', `endfunction', `endif', and
- `endwhile', which allow for better diagnostics. The `end' keyword
- is still recognized. All script files have been changed to use
- these new keywords in place of `end'.
-
- * It is now possible to uninstall Octave by doing a `make uninstall'
- in the top level directory.
-
- * The Makefiles are much closer to conforming with GNU coding standards.
-
- * New functions:
-
- win_texas_lotto -- produce six unique random numbers between 1 and 50.
- quad -- numerical integration.
- lu -- LU factorization
- qr -- QR factorization
- dassl -- Solution of DAEs using DASSL.
-
- * New files:
-
- THANKS -- A list of people and organizations who have supported
- the development of Octave.
-
- NEWS -- This file, listing recent changes.
-
- * Help is now available at the gnuplot prompt.
diff -r 7ecd07721cca -r 86ddba86efbe etc/NEWS.1.md
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/NEWS.1.md Wed Dec 08 22:43:24 2021 +0900
@@ -0,0 +1,1602 @@
+Summary of changes for version 1.1.1 (1995-02-23):
+-------------------------------------------------
+
+ * New built-in variables, default_return_value and
+ define_all_return_values.
+
+ If define_all_return_values is set to "false", Octave does not do
+ anything special for return values that are left undefined, and
+ you will get an error message if you try to use them. For
+ example, if the function
+
+ function [x, y] = f ()
+ y = 1;
+ endfunction
+
+ is called as
+
+ octave:13> [a, b] = f ()
+
+ Octave will print an error message for the attempt to assign an
+ undefined value to `a'.
+
+ This is incompatible with Matlab, which will define the return
+ variable `x' to be the empty matrix. To get the Matlab-like
+ behavior, you can set the variable define_all_return_values to
+ "true" (the default is "false") and default_return_value to `[]'
+ (the default). Then, any return values that remain undefined when
+ the function returns will be initialized to `[]'.
+
+ If the function is called without explicitly asking for an output,
+ it will succeed. This behavior is compatible and unchanged from
+ previous versions of Octave.
+
+ * New built-in variable suppress_verbose_help_message. If set to
+ "true", Octave will not add additional help information to the end
+ of the output from the help command and usage messages for
+ built-in commands. The default value is "false".
+
+ * New built-in variable PS4 is used as the prefix of echoed input
+ (enabled with the --echo-input (-x) option).
+
+ * The function size() now accepts an optional second argument.
+
+ * Output from `save - ...' now goes through the pager.
+
+ * The break statement may also be used to exit a function, for
+ compatibility with Matlab.
+
+ * The directory tree for installing Octave is now closer to
+ conforming with the current GNU standards.
+
+ * More bug fixes.
+
+Summary of changes for version 1.1.0 (1995-01-12):
+-------------------------------------------------
+
+ * Octave now requires g++ 2.6.3 or later. This change is necessary
+ to make template instantiations cleaner, and to avoid having to
+ have special cases in the code for earlier versions of gcc.
+
+ * A new data structure type has been added. The implementation uses
+ an associative array with indices limited to strings, but the
+ syntax is more like C-style structures. here are some examples of
+ using it.
+
+ Elements of structures can be of any type, including structures:
+
+ octave:1> x.a = 1;
+ octave:2> x.b = [1, 2; 3, 4];
+ octave:3> x.c = "string";
+ octave:4> x
+ x =
+
+
+
+ octave:5> x.a
+ x.a = 1
+ octave:6> x.b
+ x.b =
+
+ 1 2
+ 3 4
+
+ octave:7> x.c
+ x.c = string
+ octave:8> x.b.d = 3
+ x.b.d = 3
+ octave:9> x.b
+ x.b =
+
+
+
+ octave:10> x.b.d
+ x.b.d = 3
+
+ Functions can return structures:
+
+ octave:1> a = rand (3) + rand (3) * I;
+ octave:2> function y = f (x)
+ > y.re = real (x);
+ > y.im = imag (x);
+ > endfunction
+ octave:3> f (a)
+ ans =
+
+
+
+ octave:4> ans.im
+ ans.im =
+
+ 0.093411 0.229690 0.627585
+ 0.415128 0.221706 0.850341
+ 0.894990 0.343265 0.384018
+
+ octave:5> ans.re
+ ans.re =
+
+ 0.56234 0.14797 0.26416
+ 0.72120 0.62691 0.20910
+ 0.89211 0.25175 0.21081
+
+ Return lists can include structure elements:
+
+ octave:1> [x.u, x.s, x.v] = svd ([1, 2; 3, 4])
+ x.u =
+
+ -0.40455 -0.91451
+ -0.91451 0.40455
+
+ x.s =
+
+ 5.46499 0.00000
+ 0.00000 0.36597
+
+ x.v =
+
+ -0.57605 0.81742
+ -0.81742 -0.57605
+
+ octave:8> x
+ x =
+
+
+
+ This feature should be considered experimental, but it seems to
+ work OK. Suggestions for ways to improve it are welcome.
+
+ * Octave now supports a limited form of exception handling modeled
+ after the unwind-protect form of Lisp:
+
+ unwind_protect
+ BODY
+ unwind_protect_cleanup
+ CLEANUP
+ end_unwind_protect
+
+ Where BODY and CLEANUP are both optional and may contain any
+ Octave expressions or commands. The statements in CLEANUP are
+ guaranteed to be executed regardless of how control exits BODY.
+
+ This is useful to protect temporary changes to global variables
+ from possible errors. For example, the following code will always
+ restore the original value of the built-in variable
+ do_fortran_indexing even if an error occurs while performing the
+ indexing operation.
+
+ save_do_fortran_indexing = do_fortran_indexing;
+ unwind_protect
+ do_fortran_indexing = "true";
+ elt = a (idx)
+ unwind_protect_cleanup
+ do_fortran_indexing = save_do_fortran_indexing;
+ end_unwind_protect
+
+ Without unwind_protect, the value of do_fortran_indexing would not
+ be restored if an error occurs while performing the indexing
+ operation because evaluation would stop at the point of the error
+ and the statement to restore the value would not be executed.
+
+ * Recursive directory searching has been implemented using Karl
+ Berry's kpathsea library. Directories below path elements that
+ end in // are searched recursively for .m files.
+
+ * Octave now waits for additional input when a pair of parentheses
+ is `open' instead of giving an error. This allows one to write
+ statements like this
+
+ if (big_long_variable_name == other_long_variable_name
+ || not_so_short_variable_name > 4
+ && y > x)
+ some (code, here);
+
+ without having to clutter up the if statement with continuation
+ characters.
+
+ * Continuation lines are now allowed in string constants and are
+ handled correctly inside matrix constants.
+
+ * Both `...{whitespace}\n' and `\{whitespace}\n' can be used to
+ introduce continuation lines, where {whitespace} may include
+ spaces, tabs and comments.
+
+ * The script directory has been split up by topic.
+
+ * Dynamic linking mostly works with dld. The following limitations
+ are known problems:
+
+ -- Clearing dynamically linked functions doesn't work.
+
+ -- Dynamic linking only works with dld, which has not been ported
+ to very many systems yet.
+
+ -- Configuring with --enable-lite-kernel seems to mostly work to
+ make nonessential built-in functions dynamically loaded, but
+ there also seem to be some problems. For example, fsolve seems
+ to always return info == 3. This is difficult to debug since
+ GDB doesn't appear to allow breakpoints to be set inside
+ dynamically loaded functions.
+
+ -- Octave uses a lot of memory if the dynamically linked functions
+ are compiled with -g. This appears to be a limitation with
+ dld, and can be avoided by not using -g to compile functions
+ that will be linked dynamically.
+
+ * fft2 and ifft2 are now built-in functions.
+
+ * The `&&' and `||' logical operators are now evaluated in a
+ short-circuit fashion and work differently than the element by
+ element operators `&' and `|'. See the Octave manual for more
+ details.
+
+ * Expressions like 1./m are now parsed as 1 ./ m, not 1. / m.
+
+ * The replot command now takes the same arguments as gplot or
+ gsplot (except ranges, which cannot be respecified with replot
+ (yet)) so you can add additional lines to existing plots.
+
+ * The hold command has been implemented.
+
+ * New function `clearplot' clears the plot window. The name `clg'
+ is aliased to `clearplot' for compatibility with Matlab.
+
+ * The commands `gplot clear' and `gsplot clear' are equivalent to
+ `clearplot'. (Previously, `gplot clear' would evaluate `clear' as
+ an ordinary expression and clear all the visible variables.)
+
+ * The Matlab-style plotting commands have been improved. They now
+ accept line-style arguments, multiple x-y pairs, and other plot
+ option flags. For example,
+
+ plot (x, y, "@12", x, y2, x, y3, "4", x, y4, "+")
+
+ results in a plot with
+
+ y plotted with points of type 2 ("+") and color 1 (red).
+ y2 plotted with lines.
+ y3 plotted with lines of color 4.
+ y4 plotted with points which are "+"s.
+
+ the help message for `plot' and `plot_opt' provide full
+ descriptions of the options.
+
+ * NaN is now dropped from plot data, and Inf is converted to a
+ very large value before calling gnuplot.
+
+ * Improved load and save commands:
+
+ -- The save and load commands can now read and write a new binary
+ file format. Conversion to and from IEEE big and little endian
+ formats is handled automatically. Conversion for other formats
+ has not yet been implemented.
+
+ -- The load command can now read Matlab .mat files, though it is
+ not yet able to read sparse matrices or handle conversion for
+ all data formats.
+
+ -- The save command can write Matlab .mat files.
+
+ -- The load command automatically determines the save format
+ (binary, ascii, or Matlab binary).
+
+ -- The default format for the save command is taken from the
+ built-in variable `default_save_format'.
+
+ -- The save and load commands now both accept a list of globbing
+ patterns so you can easily load a list of variables from a
+ file.
+
+ -- The load command now accepts the option -list, for listing the
+ variable names without actually loading the data. With
+ -verbose, it prints a long listing.
+
+ -- The load command now accepts the option -float-binary, for
+ saving floating point data in binary files in single precision.
+
+ * who and whos now accept a list of globbing patterns so you can
+ limit the lists of variables and functions to those that match a
+ given set of patterns.
+
+ * New functions for manipulating polynomials
+
+ compan -- companion matrix corresponding to polynomial coefficients
+ conv -- convolve two vectors
+ deconv -- deconvolve two vectors
+ roots -- find the roots of a polynomial
+ poly -- characteristic polynomial of a matrix
+ polyderiv -- differentiate a polynomial
+ polyinteg -- integrate a polynomial
+ polyreduce -- reduce a polynomial to minimum number of terms
+ polyval -- evaluate a polynomial at a point
+ polyvalm -- evaluate a polynomial in the matrix sense
+ residue -- partial fraction expansion corresponding to the ratio
+ of two polynomials
+
+ * New functions for manipulating sets
+
+ create_set -- create a set of unique values
+ complement -- find the complement of two sets
+ intersection -- find the intersection of two sets
+ union -- find the union of two sets
+
+ * New elementary functions:
+
+ acot acoth acsc acsch
+ asec asech cot coth
+ csc csch log2 sec
+ sech
+
+ * New special functions:
+
+ beta -- beta function
+ betai -- incomplete beta function
+ gammai -- incomplete gamma function
+
+ * New image processing functions:
+
+ colormap -- set and return current colormap
+ gray -- set a gray colormap
+ gray2ind -- image format conversion
+ image -- display an image
+ imagesc -- scale and display an image
+ imshow -- display images
+ ind2gray -- image format conversion
+ ind2rgb -- image format conversion
+ loadimage -- load an image from a file
+ ntsc2rgb -- image format conversion
+ ocean -- set a color colormap
+ rgb2ind -- image format conversion
+ rgb2ntsc -- image format conversion
+ saveimage -- save an image to a file
+
+ * New time and date functions:
+
+ tic -- set wall-clock timer
+ toc -- get elapsed wall-clock time, since timer last set
+ etime -- another way to get elapsed wall-clock time
+ cputime -- get CPU time used since Octave started
+ is_leap_year -- is the given year a leap year?
+
+ * Other new functions:
+
+ bug_report -- submit a bug report to the bug-octave mailing list
+
+ toascii -- convert a string to a matrix of ASCII character codes
+
+ octave_tmp_file -- generate a unique temporary file name
+
+ undo_string_escapes -- replace special characters in a string by
+ their backslash forms
+
+ is_struct -- determine whether something is a structure data type
+
+ feof -- check EOF condition for a specified file
+ ferror -- check error state for a specified file
+ fread -- read binary data from a file
+ fwrite -- write binary data to a file
+
+ file_in_path -- check to see if named file exists in given path
+
+ kbhit -- get a single character from the terminal
+
+ axis -- change plot ranges
+ hist -- plot histograms
+
+ diary -- save commands and output to a file
+
+ type -- show the definition of a function
+ which -- print the type of an identifier or the location of a
+ function file
+
+ isieee -- Returns 1 if host uses IEEE floating point
+ realmax -- Returns largest floating point number
+ realmin -- Returns smallest floating point number
+
+ gcd -- greatest common divisor
+ lcm -- least common multiple
+
+ null -- orthonormal basis of the null space of a matrix
+ orth -- orthonormal basis of the range space of a matrix
+
+ fft2 -- two-dimensional fast fourier transform
+ ifft2 -- two-dimensional inverse fast fourier transform
+ filter -- digital filter
+ fftfilt -- filter using fft
+ fftconv -- convolve to vectors using fft
+ sinc -- returns sin(pi*x)/(pi*x)
+ freqz -- compute the frequency response of a filter
+
+ * The meaning of nargin (== args.length ()) in built-in functions
+ has been changed to match the meaning of nargin in user-defined
+ functions.
+
+ * Variable return lists. Octave now has a real mechanism for
+ handling functions that return an unspecified number of values,
+ so it is no longer necessary to place an upper bound on the number
+ of outputs that a function can produce.
+
+ Here is an example of a function that uses the new syntax to
+ produce n values:
+
+ function [...] = foo (n)
+ for i = 1:n
+ vr_val (i * x);
+ endfor
+ endfunction
+
+ * New keyword, all_va_args, that allows the entire list of va_args
+ to be passed to another function. For example, given the functions
+
+ function f (...)
+ while (nargin--)
+ disp (va_arg ())
+ endwhile
+ endfunction
+ function g (...)
+ f ("begin", all_va_args, "end")
+ endfunction
+
+ the statement
+
+ g (1, 2, 3)
+
+ prints
+
+ begin
+ 1
+ 2
+ 3
+ end
+
+ all_va_args may be used more than once, but can only be used
+ within functions that take a variable number of arguments.
+
+ * If given a second argument, svd now returns an economy-sized
+ decomposition, eliminating the unnecessary rows or columns of U or
+ V.
+
+ * The max and min functions correctly handle complex matrices in
+ which some columns contain real values only.
+
+ * The find function now handles 2 and 3 output arguments.
+
+ * The qr function now allows computation of QR with pivoting.
+
+ * hilb() is much faster for large matrices.
+
+ * computer() is now a built-in function.
+
+ * pinv() is now a built-in function.
+
+ * The output from the history command now goes through the pager.
+
+ * If a function is called without assigning the result, nargout is
+ now correctly set to 0.
+
+ * It is now possible to write functions that only set some return
+ values. For example, calling the function
+
+ function [x, y, z] = f () x = 1; z = 2; endfunction
+
+ as
+
+ [a, b, c] = f ()
+
+ produces:
+
+ a = 1
+
+ b = [](0x0)
+
+ c = 2
+
+ * The shell_cmd function has been renamed to system (the name
+ shell_cmd remains for compatibility). It now returns [output, status].
+
+ * New built-in variable `OCTAVE_VERSION'. Also a new function,
+ version, for compatibility with Matlab.
+
+ * New built-in variable `automatic_replot'. If it is "true", Octave
+ will automatically send a replot command to gnuplot each time the
+ plot changes. Since this is fairly inefficient, the default value
+ is "false".
+
+ * New built-in variable `whitespace_in_literal_matrix' allows some
+ control over how Octave decides to convert spaces to commas in
+ matrix expressions like `[m (1)]'.
+
+ If the value of `whitespace_in_literal_matrix' is "ignore", Octave
+ will never insert a comma or a semicolon in a literal matrix list.
+ For example, the expression `[1 2]' will result in an error
+ instead of being treated the same as `[1, 2]', and the expression
+
+ [ 1, 2,
+ 3, 4 ]
+
+ will result in the vector [1 2 3 4] instead of a matrix.
+
+ If the value of `whitespace_in_literal_matrix' is "traditional",
+ Octave will convert spaces to a comma between identifiers and `('.
+ For example, given the matrix
+
+ m = [3 2]
+
+ the expression
+
+ [m (1)]
+
+ will be parsed as
+
+ [m, (1)]
+
+ and will result in
+
+ [3 2 1]
+
+ and the expression
+
+ [ 1, 2,
+ 3, 4 ]
+
+ will result in a matrix because the newline character is converted
+ to a semicolon (row separator) even though there is a comma at the
+ end of the first line (trailing commas or semicolons are ignored).
+ This is apparently how Matlab behaves.
+
+ Any other value for `whitespace_in_literal_matrix' results in
+ behavior that is the same as traditional, except that Octave does
+ not convert spaces to a comma between identifiers and `('.
+ For example, the expression
+
+ [m (1)]
+
+ will produce 3. This is the way Octave has always behaved.
+
+ * Line numbers in error messages for functions defined in files and
+ for script files now correspond to the file line number, not the
+ number of lines after the function keyword appeared.
+
+ * Octave now extracts help from script files. The comments must
+ come before any other statements in the file.
+
+ * In function files, the first block of comments in the file will
+ now be interpreted as the help text if it doesn't look like the
+ Octave copyright notice. Otherwise, Octave extracts the first set
+ of comments after the function keyword.
+
+ * The function clock is more accurate on systems that have the
+ gettimeofday() function.
+
+ * The standard output stream is now automatically flushed before
+ reading from stdin with any of the *scanf() functions.
+
+ * Expanded reference card.
+
+ * The Octave distribution now includes a frequently asked questions
+ file, with answers. Better answers and more questions (with
+ answers!) are welcome.
+
+ * New option --verbose. If Octave is invoked with --verbose and not
+ --silent, a message is printed if an octaverc file is read while
+ Octave is starting.
+
+ * An improved configure script generated by Autoconf 2.0.
+
+ * Lots of bug fixes.
+
+Summary of changes for version 1.0 (1994-02-17):
+-----------------------------------------------
+
+ * C-style I/O functions now handle files referenced by name or by
+ number more consistently.
+
+Summary of changes for version 0.83 (1994-02-13):
+------------------------------------------------
+
+ * Loading global symbols should work now.
+
+ * Clearing the screen doesn't reprint the prompt unnecessarily.
+
+ * The operations OP for OP == +, -,
+ *, or ./ no longer crash Octave.
+
+ * More portability and configuration fixes.
+
+Summary of changes for version 0.82 (1994-02-08):
+------------------------------------------------
+
+ * Octave now comes with a reference card.
+
+ * The manual has been improved, but more work remains to be done.
+
+ * The atanh function now works for complex arguments.
+
+ * The asin, acos, acosh, and atanh functions now work properly when
+ given real-valued arguments that produce complex results.
+
+ * SEEK_SET, SEEK_CUR, and SEEK_END are now constants.
+
+ * The `using' qualifier now works with gplot and gsplot when the
+ data to plot is coming directly from a file.
+
+ * The strcmp function now works correctly for empty strings.
+
+ * Eliminated bogus parse error for M-files that don't end with `end'
+ or `endfunction'.
+
+ * For empty matrices with one nonzero dimension, the +, -, .*, and
+ ./ operators now correctly preserve the dimension.
+
+ * Octave no longer crashes if you type ^D at the beginning of a line
+ in the middle of defining a loop or if statement.
+
+ * On AIX systems, Back off on indexing DiagArray via Proxy class to
+ avoid gcc (or possibly AIX assembler?) bug.
+
+ * Various other bug and portability fixes.
+
+Summary of changes for version 0.81 (1994-01-28):
+------------------------------------------------
+
+ * Octave no longer dumps core if you try to define a function in
+ your .octaverc file.
+
+ * Fixed bug in Array class that resulted in bogus off-diagonal
+ elements when computing eigenvalue and singular value
+ decompositions.
+
+ * Fixed bug that prevented lsode from working on the SPARCstation,
+ at least with some versions of Sun's f77. This bug was introduced
+ in 0.80, when I changed LSODE to allow the user to abort the
+ integration from within the RHS function.
+
+ * Fixed bug that prevented global attribute of variables from being
+ saved with save(), and another that prevented load() from working
+ at all.
+
+Summary of changes for version 0.80 (1994-01-18):
+------------------------------------------------
+
+ * I have started working on a manual for the C++ classes. At this
+ point, it is little more than a list of function names. If you
+ would like to volunteer to help work on this, please contact
+ maintainers@octave.org.
+
+ * The patterns accepted by the save and clear commands now work like
+ file name globbing patterns instead of regular expressions. I
+ apologize for any inconvenience this change may cause, but file
+ name globbing seems like a more reasonable style of pattern
+ matching for this purpose.
+
+ * It is now possible to specify tolerances and other optional inputs
+ for dassl, fsolve, lsode, npsol, qpsol, and quad. For each of
+ these functions, there is a corresponding function X_options,
+ which takes a keyword and value arguments. If invoked without any
+ arguments, the X_options functions print a list of possible
+ keywords and current values. For example,
+
+ npsol_options ()
+
+ prints a list of possible options with values, and
+
+ npsol_options ("major print level", 10)
+
+ sets the major print level to 10.
+
+ The keyword match is not case sensitive, and the keywords may be
+ abbreviated to the shortest unique match. For example,
+
+ npsol_options ("ma p", 10)
+
+ is equivalent to the statement shown above.
+
+ * The new built-in variable save_precision can be used to set the
+ number of digits preserved by the ASCII save command.
+
+ * Assignment of [] now works in most cases to allow you to delete
+ rows or columns of matrices and vectors. For example, given a
+ 4x5 matrix A, the assignment
+
+ A (3, :) = []
+
+ deletes the third row of A, and the assignment
+
+ A (:, 1:2:5) = []
+
+ deletes the first, third, and fifth columns.
+
+ * Variable argument lists. Octave now has a real mechanism for
+ handling functions that take an unspecified number of arguments,
+ so it is no longer necessary to place an upper bound on the number
+ of optional arguments that a function can accept.
+
+ Here is an example of a function that uses the new syntax to print
+ a header followed by an unspecified number of values:
+
+ function foo (heading, ...)
+ disp (heading);
+ va_start ();
+ while (--nargin)
+ disp (va_arg ());
+ endwhile
+ endfunction
+
+ Note that the argument list must contain at least one named
+ argument (this restriction may eventually be removed), and the
+ ellipsis must appear as the last element of the argument list.
+
+ Calling va_start() positions an internal pointer to the first
+ unnamed argument and allows you to cycle through the arguments
+ more than once. It is not necessary to call va_start() if you
+ do not plan to cycle through the arguments more than once.
+
+ * Recursive functions should work now.
+
+ * The environment variable OCTAVE_PATH is now handled in the same
+ way as TeX handles TEXINPUTS. If the path starts with `:', the
+ standard path is prepended to the value obtained from the
+ environment. If it ends with `:' the standard path is appended to
+ the value obtained from the environment.
+
+ * New functions, from Kurt Hornik (hornik@neuro.tuwien.ac.at) and
+ the Department of Probability Theory and Statistics TU Wien,
+ Austria:
+
+ corrcoef -- corrcoef (X, Y) is the correlation between the i-th
+ variable in X and the j-th variable in Y
+ corrcoef (X) is corrcoef (X, X)
+ cov -- cov (X, Y) is the covariance between the i-th
+ variable in X and the j-th variable in Y
+ cov (X) is cov (X, X)
+ gls -- generalized least squares estimation
+ kurtosis -- kurtosis(x) = N^(-1) std(x)^(-4) SUM_i (x(i)-mean(x))^4 - 3
+ If x is a matrix, return the row vector containing
+ the kurtosis of each column
+ mahalanobis -- returns Mahalanobis' D-square distance between the
+ multivariate samples X and Y, which must have the
+ same number of components (columns), but may have
+ a different number of observations (rows)
+ ols -- ordinary least squares estimation
+ pinv -- returns the pseudoinverse of X; singular values
+ less than tol are ignored
+ skewness -- skewness (x) = N^(-1) std(x)^(-3) SUM_i (x(i)-mean(x))^3
+ if x is a matrix, return the row vector containing
+ the skewness of each column
+
+ * Errors in user-supplied functions called from dassl, fsolve,
+ lsode, npsol, and quad are handled more gracefully.
+
+ * Programming errors in the use of the C++ classes within Octave
+ should no longer cause Octave to abort. Instead, Octave's error
+ handler function is called and execution continues as best as is
+ possible. This should result in eventually returning control to
+ the top-level Octave prompt. (It would be nice to have a real
+ exception handling mechanism...)
+
+ * A number of memory leaks have been eliminated. Thanks to
+ Fong Kin Fui for reporting them.
+
+ * The C++ matrix classes are now derived from a generic
+ template-based array class.
+
+ * The readline function operate-and-get-next (from bash) is now
+ available and bound to C-O by default.
+
+ * Octave now uses the version of readline currently distributed with
+ bash-1.13. On some systems, interactive invocations of Octave
+ will now blink the cursor to show matching parens.
+
+ * By default, include files are now installed in
+ $prefix/include/octave instead of $prefix/include.
+
+ * Octave now uses a config.h file instead of putting all defines on
+ the compiler command line.
+
+Summary of changes for version 0.79 (1993-11-08):
+------------------------------------------------
+
+ * New control systems functions:
+
+ dgram -- Returns the discrete controllability and observability gramian.
+ dlqr -- Discrete linear quadratic regulator design.
+ dlqe -- Discrete linear quadratic estimator (Kalman Filter) design.
+ c2d -- Convert continuous system description to discrete time
+ description assuming zero-order hold and given sample time.
+
+ * The max (min) functions can now return the index of the max (min)
+ value as a second return value.
+
+Summary of changes for version 0.78 (1993-11-05):
+------------------------------------------------
+
+ * Octave's handling of global variables has been completely
+ rewritten. To access global variables inside a function, you must
+ now declare them to be global within the function body. Likewise,
+ if you do not declare a variable as global at the command line,
+ you will not have access to it within a function, even if it is
+ declared global there. For example, given the function
+
+ function f ()
+ global x = 1;
+ y = 2;
+ endfunction
+
+ the global variable `x' is not visible at the top level until the
+ command
+
+ octave:13> global x
+
+ has been evaluated, and the variable `y' remains local to the
+ function f() even if it is declared global at the top level.
+
+ Clearing a global variable at the top level will remove its global
+ scope and leave it undefined. For example,
+
+ octave:1> function f () # Define a function that accesses
+ > global x; # the global variable `x'.
+ > x
+ > endfunction
+ octave:2> global x = 1 # Give the variable `x' a value.
+ octave:3> f () # Evaluating the function accesses the
+ x = 1 # global `x'.
+ octave:4> clear x # Remove `x' from global scope, clear value.
+ octave:5> x = 2 # Define new local `x' at the top level
+ x = 2
+ octave:6> f # The global `x' is no longer defined.
+ error: `x' undefined near line 1 column 25
+ error: evaluating expression near line 1, column 25
+ error: called from `f'
+ octave:7> x # But the local one is.
+ x = 2
+
+ * The new function, `is_global (string)' returns 1 if the variable
+ named by string is globally visible. Otherwise, returns 0.
+
+ * The implementation of `who' has changed. It now accepts the
+ following options:
+
+ -b -builtins -- display info for built-in variables and functions
+ -f -functions -- display info for currently compiled functions
+ -v -variables -- display info for user variables
+ -l -long -- display long info
+
+ The long output looks like this:
+
+ octave:5> who -l
+
+ *** currently compiled functions:
+
+ prot type rows cols name
+ ==== ==== ==== ==== ====
+ wd user function - - f
+
+ *** local user variables:
+
+ prot type rows cols name
+ ==== ==== ==== ==== ====
+ wd real scalar 1 1 y
+
+ *** globally visible user variables:
+
+ prot type rows cols name
+ ==== ==== ==== ==== ====
+ wd complex matrix 13 13 x
+
+ where the first character of the `protection' field is `w' if the
+ symbol can be redefined, and `-' if it has read-only access. The
+ second character may be `d' if the symbol can be deleted, or `-'
+ if the symbol cannot be cleared.
+
+ * The new built-in variable ignore_function_time_stamp can be used
+ to prevent Octave from calling stat() each time it looks up
+ functions defined in M-files. If set to "system", Octave will not
+ automatically recompile M-files in subdirectories of
+ $OCTAVE_HOME/lib/VERSION if they have changed since they were last
+ compiled, but will recompile other M-files in the LOADPATH if they
+ change. If set to "all", Octave will not recompile any M-files
+ unless their definitions are removed with clear. For any other
+ value of ignore_function_time_stamp, Octave will always check to
+ see if functions defined in M-files need to recompiled. The
+ default value of ignore_function_time_stamp is "system".
+
+ * The new built-in variable EDITOR can be used to specify the editor
+ for the edit_history command. It is set to the value of the
+ environment variable EDITOR, or `vi' if EDITOR is not set, or is
+ empty.
+
+ * There is a new built-in variable, INFO_FILE, which is used as the
+ location of the info file. Its initial value is
+ $OCTAVE_HOME/info/octave.info, so `help -i' should now work
+ provided that OCTAVE_HOME is set correctly, even if Octave is
+ installed in a directory different from that specified at compile
+ time.
+
+ * There is a new command line option, --info-file FILE, that may be
+ used to set Octave's idea of the location of the info file. It
+ will override any value of OCTAVE_INFO_FILE found in the
+ environment, but not any INFO_FILE="filename" commands found in
+ the system or user startup files.
+
+ * Octave's Info reader will now recognize gzipped files that have
+ names ending in `.gz'.
+
+ * The save command now accepts regular expressions as arguments.
+ Note that these patterns are regular expressions, and do not work
+ like filename globbing. For example, given the variables `a',
+ `aa', and `a1', the command `save a*' saves `a' and `aa' but not
+ `a1'. To match all variables beginning with `a', you must use an
+ expression like `a.*' (match all sequences beginning with `a'
+ followed by zero or more characters).
+
+ * Line and column information is included in more error messages.
+
+Summary of changes for version 0.77 (1993-10-23):
+------------------------------------------------
+
+ * Improved help. The command `help -i topic' now uses the GNU Info
+ browser to display help for the given topic directly from the
+ Texinfo documentation.
+
+ * New function: chol -- Cholesky factorization.
+
+Summary of changes for version 0.76 (1993-10-05):
+------------------------------------------------
+
+ * Better run-time error messages. Many now include line and column
+ information indicating where the error occurred. Octave will also
+ print a traceback for errors occurring inside functions. If you
+ find error messages that could use improvement, or errors that
+ Octave fails to catch, please send a bug report to
+ bug@octave.org.
+
+ * If gplot (or gsplot) is given a string to plot, and the string
+ does not name a file, Octave will pass the string along to gnuplot
+ directly. This allows commands like
+
+ gplot "sin (x)" w l, data w p
+
+ to work (assuming that data is a variable containing a matrix of
+ values).
+
+ * Long options (--help, --version, etc.) are supported.
+
+Summary of changes for version 0.75 (1993-09-15):
+------------------------------------------------
+
+ * The documentation is much more complete, but still could use a lot
+ of work.
+
+ * The history function now prints line numbers by default. The
+ command `history -q' will omit them.
+
+ * The clear function now accepts regular expressions.
+
+ * If gplot (or gsplot) is given a string to plot, and the string
+ names a file, Octave attempts to plot the contents of the file.
+
+ * New functions:
+
+ history:
+
+ run_history -- run commands from the history list.
+ edit_history -- edit commands from the history list with your
+ favorite editor.
+
+ linear algebra:
+
+ balance -- Balancing for algebraic and generalized
+ eigenvalue problems.
+ givens -- Givens rotation.
+ is_square -- Check to see if a matrix is square.
+ qzhess -- QZ decomposition of the matrix pencil (a - lambda b).
+ qzval -- Generalized eigenvalues for real matrices.
+ syl -- Sylvester equation solver.
+
+ control systems:
+
+ is_symmetric -- Check to see if a matrix is symmetric.
+ abcddim -- Check dimensions of linear dynamic system [A,B,C,D].
+ is_controllable -- Check to see if [A,B,C,D] is controllable.
+ is_observable -- Check to see if [A,B,C,D] is observable.
+ are -- Solve algebraic Ricatti equation.
+ dare -- Solve discrete-time algebraic Ricatti equation.
+ lqe -- Kalman filter design for continuous linear system.
+ lqr -- Linear Quadratic Regulator design.
+ lyap -- Solve Lyapunov equation.
+ dlyap -- Solve discrete Lyapunov equation.
+ tzero -- Compute the transmission zeros of [A,B,C,D].
+
+Summary of changes for version 0.74 (1993-07-20):
+------------------------------------------------
+
+ * Formal parameters to functions are now always considered to be
+ local variables, so things like
+
+ global x = 0
+ global y = 0
+ function y = f (x) x = 1; y = x; end
+ f (x)
+
+ result in the function returning 1, with the global values of x
+ and y unchanged.
+
+ * Multiple assignment expressions are now allowed to take indices,
+ so things like
+
+ octave:13> [a([1,2],[3,4]), b([5,6],[7,8])] = lu ([1,2;3,4])
+
+ will work correctly.
+
+Summary of changes for version 0.73 (1993-07-10):
+------------------------------------------------
+
+ * Saving and loading global variables works correctly now.
+
+ * The save command no longer saves built-in variables.
+
+ * Global variables are more reliable.
+
+ * Matrices may now have one or both dimensions zero, so that
+ operations on empty matrices are now handled more consistently.
+
+ By default, dimensions of the empty matrix are now printed along
+ with the empty matrix symbol, `[]'. For example:
+
+ octave:13> zeros (3, 0)
+ ans =
+
+ [](3x0)
+
+ The new variable `print_empty_dimensions' controls this behavior.
+
+ See also Carl de Boor, An Empty Exercise, SIGNUM, Volume 25,
+ pages 2--6, 1990, or C. N. Nett and W. M. Haddad, A
+ System-Theoretic Appropriate Realization of the Empty Matrix
+ Concept, IEEE Transactions on Automatic Control, Volume 38,
+ Number 5, May 1993.
+
+ * The right and left division operators `/' and `\' will now find a
+ minimum norm solution if the system is not square, or if the
+ coefficient matrix is singular.
+
+ * New functions:
+
+ hess -- Hessenberg decomposition
+ schur -- Ordered Schur factorization
+ perror -- print error messages corresponding to error codes
+ returned from the functions fsolve, npsol, and qpsol
+ (with others to possibly be added later).
+
+ * Octave now prints a warning if it finds anything other than
+ whitespace or comments after the final `end' or `endfunction'
+ statement.
+
+ * The bodies of functions, and the for, while, and if commands are
+ now allowed to be empty.
+
+ * Support for Gill and Murray's QPSOL has been added. Like NPSOL,
+ QPSOL is not freely redistributable either, so you must obtain
+ your own copy to be able to use this feature. More information
+ about where to find QPSOL and NPSOL are in the file README.NLP.
+
+Summary of changes for version 0.72 (1993-06-10):
+------------------------------------------------
+
+ * For numeric output, columns are now lined up on the decimal point.
+ (This requires libg++-2.3.1 or later to work correctly).
+
+ * If octave is running interactively and the output intended for the
+ screen is longer than one page and a pager is available, it is
+ sent to the pager through a pipe. You may specify the program to
+ use as the pager by setting the variable PAGER. PAGER may also
+ specify a command pipeline.
+
+ * Spaces are not always significant inside square brackets now, so
+ commands like
+
+ [ linspace (1, 2) ]
+
+ will work. However, some possible sources of confusion remain
+ because Octave tries (possibly too hard) to determine exactly what
+ operation is intended from the context surrounding an operator.
+ For example:
+
+ -- In the command
+
+ [ 1 - 1 ]
+
+ the `-' is treated as a binary operator and the result is the
+ scalar 0, but in the command
+
+ [ 1 -1 ]
+
+ the `-' is treated as a unary operator and the result is the
+ vector [ 1 -1 ].
+
+ -- In the command
+
+ a = 1; [ 1 a' ]
+
+ the single quote character `'' is treated as a transpose operator
+ and the result is the vector [ 1 1 ], but in the command
+
+ a = 1; [ 1 a ' ]
+
+ an error message indicating an unterminated string constant is
+ printed.
+
+ * Assignments are just expressions now, so they are valid anywhere
+ other expressions are. This means that things like
+
+ if (a = n < m) ... endif
+
+ are valid. This is parsed as: compare `n < m', assign the result
+ to the variable `a', and use it as the test expression in the if
+ statement.
+
+ To help avoid errors where `=' has been used but `==' was
+ intended, Octave issues a warning suggesting parenthesis around
+ assignments used as truth values. You can suppress this warning
+ by adding parenthesis, or by setting the value of the new built-in
+ variable `warn_assign_as_truth_value' to 'false' (the default
+ value is 'true').
+
+ This is also true for multiple assignments, so expressions like
+
+ [a, b, c] = [u, s, v] = expression
+
+ are now possible. If the expression is a function, nargout is set
+ to the number of arguments for the right-most assignment. The
+ other assignments need not contain the same number of elements.
+ Extra left hand side variables in an assignment become undefined.
+
+ * The default line style for plots is now `lines' instead of
+ `points'. To change it, use the `set data style STYLE' command.
+
+ * New file handling and I/O functions:
+
+ fopen -- open a file for reading or writing
+ fclose -- close a file
+ fflush -- flush output to a file
+ fgets -- read characters from a file
+ frewind -- set file position to the beginning of a file
+ fseek -- set file position
+ ftell -- tell file position
+ freport -- print a report for all open files
+ fscanf -- read from a file
+ sscanf -- read from a string
+ scanf -- read from the standard input
+
+ * New built-in variables for file and I/O functions:
+
+ stdin -- file number corresponding to the standard input stream.
+ stdout -- file number corresponding to the standard output stream.
+ stderr -- file number corresponding to the standard error stream.
+
+ The following may be used as the final (optional) argument for
+ fseek:
+
+ SEEK_SET -- set position relative to the beginning of the file.
+ SEEK_CUR -- set position relative to the current position.
+ SEEK_END -- set position relative to the end of the file.
+
+ * New function: setstr -- convert vectors or scalars to strings
+ (doesn't work for matrices yet).
+
+ * If possible, computer now prints the system type instead of
+ always printing `Hi Dave, I'm a HAL-9000'.
+
+ * Octave now properly saves and restores its internal state
+ correctly in more places. Interrupting Octave while it is
+ executing a script file no longer causes it to exit.
+
+ * Octave now does tilde expansion on each element of the LOADPATH.
+
+ * A number of memory leaks have been plugged.
+
+ * Dependencies for C++ source files are now generated automatically
+ by g++.
+
+ * There is a new command line option, -p PATH, that may be used to
+ set Octave's loadpath from the command line. It will override any
+ value of OCTAVE_PATH found in the environment, but not any
+ LOADPATH="path" commands found in the system or user startup files.
+
+ * It is now possible to override Octave's default idea of the
+ location of the system-wide startup file (usually stored in
+ $(prefix)/lib/octave/octaverc) using the environment variable
+ OCTAVE_HOME. If OCTAVE_HOME has a value, Octave will look for
+ octaverc and its M-files in the directory $OCTAVE_HOME/lib/octave.
+
+ This allows people who are using binary distributions (as is
+ common with systems like Linux) to install the real octave binary
+ in any directory (using a name like octave.bin) and then install
+ a simple script like this
+
+ #!/bin/sh
+ OCTAVE_HOME=/foo/bar/baz
+ export OCTAVE_HOME
+ exec octave.bin
+
+ to be invoked as octave.
+
+
+Summary of changes for version 0.71 (1993-04-15):
+------------------------------------------------
+
+ * Much improved plotting facility. With this release, Octave does
+ not require a specially modified version of gnuplot, so gnuplot
+ sources are no longer distributed with Octave. For a more
+ detailed description of the new plotting features, see the file
+ PLOTTING.
+
+ * New plotting commands:
+
+ plot -- 2D plots
+ semilogx -- 2D semilog plot with logscale on the x axis
+ semilogy -- 2D semilog plot with logscale on the y axis
+ loglog -- 2D log-log plot
+ mesh -- 3D mesh plot
+ meshdom -- create matrices for 3D plotting from two vectors
+ contour -- contour plots of 3D data
+ bar -- create bar graphs
+ stairs -- create stairstep plots
+ polar -- 2D plots from theta-R data
+ grid -- turn plot grid lines on or off
+ xlabel, ylabel -- place labels on the x and y axes of 2D plots
+ sombrero -- demonstrate 3D plotting
+ gplot -- 2D plot command with gnuplot-like syntax
+ gsplot -- 3D plot command with gnuplot-like syntax
+ set -- set plot options with gnuplot syntax
+ show -- show plot options with gnuplot syntax
+ closeplot -- close stream to gnuplot process
+ purge_tmp_files -- delete temporary files created by plot command
+
+ * Other new commands:
+
+ ls, dir -- print a directory listing
+ shell_cmd -- execute shell commands
+ keyboard -- get input from keyboard, useful for debugging
+ menu -- display a menu of options and ask for input
+ fft -- fast fourier transform
+ ifft -- inverse fast fourier transform
+
+ * Strings may be enclosed in either single or double quote
+ characters. Double quote characters are not special within single
+ quote strings, and single quotes are not special within double
+ quote strings.
+
+ * Command name completion now works for M-file names too.
+
+ * Better help and usage messages for many functions.
+
+ * Help is now available for functions defined in M-files. The first
+ block of comments is taken as the text of the help message.
+
+ * Numerous changes in preparation to support dynamic loading of
+ object files with dld.
+
+ * Bug fixes to make solving DAEs with dassl actually work.
+
+ * The command `save file' now saves all variables in the named file.
+
+ * If do_fortran_indexing is 'true', indexing a scalar with
+ [1,1,1,...] (n times) replicates its value n times. The
+ orientation of the resulting vector depends on the value of
+ prefer_column_vectors.
+
+ * Things like [[1,2][3,4]] no longer cause core dumps, and invalid
+ input like [1,2;3,4,[5,6]] now produces a diagnostic message.
+
+ * The cd, save, and load commands now do tilde expansion.
+
+ * It's now possible to clear global variables and functions by name.
+
+ * Use of clear inside functions is now a parse error.
+
+Summary of changes for version 0.70 (1993-03-08):
+------------------------------------------------
+
+ * Better parse error diagnostics. For interactive input, you get
+ messages like
+
+ octave:1> a = 3 + * 4;
+
+ parse error:
+
+ a = 3 + * 4;
+ ^
+
+ and for script files, the message includes the file name and input
+ line number:
+
+ octave:1> foo
+
+ parse error near line 4 of file foo.m:
+
+ a = 3 + * 4;
+ ^
+
+ * New built-in variable PS2 which is used as the secondary prompt.
+ The default value is '> '.
+
+ * New file, octave-mode.el, for editing Octave code with GNU Emacs.
+ This is a modified version of Matthew R. Wette's matlab-mode.el.
+
+ * Better support for missing math functions.
+
+ * User preferences are now cached in a global struct so we don't
+ have to do a symbol table lookup each time we need to know what
+ they are. This should mean slightly improved performance for
+ evaluating expressions.
+
+Summary of changes for version 0.69 (1993-02-23):
+------------------------------------------------
+
+ * Multiple assignments are now possible, so statements like
+
+ a = b = c = 3;
+ a = b = c = [1,2;3,4];
+
+ or
+
+ c = (a = (b = 2) * 3 + 4) * 5
+
+ are legal, as are things that have even more bizarre effects, like
+
+ a(4:6,4:6) = b(2:3,2:3) = [1,2;3,4];
+
+ (try it).
+
+ * Improved parsing of strings (but they still don't work as matrix
+ elements).
+
+ * An M-file may now either define a function or be a list of
+ commands to execute.
+
+ * Better detection and conditional compilation of IEEE functions
+ isinf, finite, and isnan.
+
+ * Replacements for acosh, asinh, atanh, and gamma from the BSD math
+ library for those systems that don't have them.
+
+Summary of changes for version 0.68 (1993-02-16):
+------------------------------------------------
+
+ * New functions:
+
+ eval -- evaluate a string as a sequence of Octave commands.
+ input -- print a prompt and get user input.
+
+Summary of changes for version 0.67 (1993-02-09):
+------------------------------------------------
+
+ * New functions:
+
+ find -- return the indices of nonzero elements.
+
+ * Zero-one style indexing now works. For example,
+
+ a = [1,2,3,4];
+ b = a([1,0,0,1])
+
+ sets b to the first and fourth elements of a.
+
+ Zero-one style indexing also works for indexing the left hand side
+ of an assignment. For example,
+
+ a = rand (1,2;3,4);
+ a([0,1],:) = [-1,-2]
+
+ sets the second row of a to [-1 -2]
+
+ The behavior for the ambiguous case
+
+ a = [1,2,3,4];
+ b = a([1,1,1,1]);
+
+ is controlled by the new global variable `prefer_zero_one_indexing'.
+ If this variable is equal to 'true', b will be set to [1 2 3 4].
+ If it is false, b will be set to [1 1 1 1]. The default value is
+ 'false'.
+
+ * Using the new global variable `propagate_empty_matrices', it is
+ possible to have unary and binary operations on empty matrices
+ return an empty matrix. The default value of this variable is
+ 'warn', so that empty matrices are propagated but you get a
+ warning. Some functions, like eig and svd have also been changed
+ to handle this.
+
+ * Empty matrices can be used in conditionals, but they always
+ evaluate to `false'. With propagate_empty_matrices = 'true', both
+ of the following expressions print 0:
+
+ if [], 1, else 0, end
+ if ~[], 1, else 0, end
+
+ * Octave no longer converts input like `3.2 i' or `3 I' to complex
+ constants directly because that causes problems inside square
+ brackets, where spaces are important. This abbreviated notation
+ *does* work if there isn't a space between the number and the i,
+ I, j, or J.
+
+Summary of changes for version 0.66 (1993-01-28):
+------------------------------------------------
+
+ * Logical unary not operator (~ or !) now works for complex.
+
+ * Left division works.
+
+ * Right and left element by element division should work correctly
+ now.
+
+ * Numbers like .3e+2 are no longer errors.
+
+ * Indexing a matrix with a complex value doesn't cause a core dump.
+
+ * The min and max functions should work correctly for two arguments.
+
+ * Improved (I hope!) configuration checks.
+
+ * Octave is now installed as octave-M.N, where M and N are version
+ numbers, and octave is a link to that file. This makes it
+ possible to have more than one version of the interpreter installed.
+
+Summary of changes for version 0.63 (1993-01-14):
+------------------------------------------------
+
+ * The reshape function works again.
+
+ * Octave now converts input like `3.2i' or `3 I' or `2.3e5 j' to be
+ complex constants directly, rather than requiring an expression
+ like `3.3 * i' to be evaluated.
+
+Summary of changes for version 0.61 (1993-01-10):
+------------------------------------------------
+
+ * Octave has been successfully compiled using gcc 2.3.3 and libg++ 2.3.
+ on a 486 system running Linux.
+
+ * The win_texas_lotto function is now called texas_lotto (it's a
+ script file, and win_texas_lotto.m is too long for some Linux and
+ System V systems).
+
+Summary of changes for version 0.57:
+------------------------------------
+
+ * The C-like formatted print functions printf, fprintf, and sprintf
+ finally work.
+
+Summary of changes for version 0.56:
+------------------------------------
+
+ * By default, octave prints a short disclaimer when it starts.
+ (You can suppress it by invoking octave with -q).
+
+ * You can keep octave from reading your ~/.octaverc and .octaverc
+ files by invoking it with -f.
+
+ * When returning two values, eig now returns [v, d] instead of
+ [lambda, v], where d is a diagonal matrix made from lambda.
+
+ * The win_texas_lotto function now produces a sorted list.
+
+ * New functions:
+
+ expm -- matrix exponential.
+ logm -- matrix logarithm.
+
+Summary of changes for version 0.55:
+------------------------------------
+
+ * The following (C-style) backslash escape sequences work in quoted
+ strings (useful(?) with printf()):
+
+ \a bell \r carriage return
+ \b backspace \t horizontal tab
+ \f formfeed \v vertical tab
+ \n newline \\ backslash
+
+ * Use of `...' at the end of a line will allow a statement to
+ continue over more than one line.
+
+ * The names `inf' and `nan' are now aliases for `Inf' and `NaN',
+ respectively.
+
+ * New functions:
+
+ casesen -- print a warning if the luser tries to turn off case
+ sensitivity.
+ median -- find median value.
+ norm -- compute the norm of a matrix.
+ sort -- sort columns.
+
+ * New variable, `silent_functions'. If silent_functions == 'true',
+ the results of expressions are not printed even if they are not
+ followed by a semicolon. The disp() and printf() functions still
+ result in output. The default value for this variable is 'false'.
+
+ * New variable `return_last_value_computed'. If it is 'true',
+ functions defined in script files return the last value computed
+ if a return value has not been explicitly declared. The default
+ value for this variable is 'false'.
+
+Summary of changes for version 0.52:
+------------------------------------
+
+ * Name completion works for function and variable names currently in
+ the symbol tables. Coming soon: completion for names of functions
+ defined in script files but not yet compiled.
+
+ * The initial value of do_fortran_indexing is now false, and the
+ initial value of prefer_column_vectors is now true. Swap the
+ values of these variables if you want behavior that is more like
+ Matlab.
+
+ * All script files check the number of input arguments before doing
+ much real work.
+
+ * The identifiers `i' and `j' are now also names for sqrt(-1).
+ These symbols may be used for other purposes, but their original
+ definition will reappear if they are cleared.
+
+ * The symbol tables are now implemented with hash tables for faster
+ searching.
+
+ * A small amount of help is now available for most built-in
+ operators, keywords and functions. Coming soon: help for script
+ files.
+
+ * Without any arguments, the help command now lists all known
+ built-in operators, keywords and functions.
+
+ * Generic parse errors are now signalled by `Eh, what's up doc?',
+ which is closer to what Bugs actually says.
+
+ * The who command now only prints variable names by default.
+ Use the -fcn (or -fcns, or -functions) switch to print the names of
+ built-in or currently compiled functions.
+
+Summary of changes for version 0.51:
+------------------------------------
+
+ * Major overhaul of array indexing.
+
+ * The colloc function actually works now.
+
+Summary of changes for version 0.50:
+------------------------------------
+
+ * The lsode and dassl functions now return the states only,
+ instead of the time and the states, so you must keep track of
+ the corresponding times (this is easy though, because you have
+ to specify a vector of desired output times anyway).
+
+ * Solution of NLPs with NPSOL now works on the SPARC.
+
+ * New keywords `endif', `endfor', `endfunction', `endif', and
+ `endwhile', which allow for better diagnostics. The `end' keyword
+ is still recognized. All script files have been changed to use
+ these new keywords in place of `end'.
+
+ * It is now possible to uninstall Octave by doing a `make uninstall'
+ in the top level directory.
+
+ * The Makefiles are much closer to conforming with GNU coding standards.
+
+ * New functions:
+
+ win_texas_lotto -- produce six unique random numbers between 1 and 50.
+ quad -- numerical integration.
+ lu -- LU factorization
+ qr -- QR factorization
+ dassl -- Solution of DAEs using DASSL.
+
+ * New files:
+
+ THANKS -- A list of people and organizations who have supported
+ the development of Octave.
+
+ NEWS -- This file, listing recent changes.
+
+ * Help is now available at the gnuplot prompt.
diff -r 7ecd07721cca -r 86ddba86efbe etc/NEWS.2
--- a/etc/NEWS.2 Tue Dec 07 16:20:15 2021 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1036 +0,0 @@
-Summary of changes for version 2.1.x (1997-06-05 -- 2006-03-20):
----------------------------------------------------------------
-
- * Given a matrix, X, and a boolean index, idx, of the same shape as
- X, X(idx) and X(idx) = RHS now work no matter what the value of
- do_fortran_indexing is.
-
- * If you are using GNU Emacs 19.34 or earlier, you will need to add
- the following code to your ~/.emacs file in order to use Emacs
- Octave mode:
-
- ;; Set up the custom library.
- ;; taken from http://www.dina.kvl.dk/~abraham/custom/
- (eval-and-compile
- (condition-case ()
- (require 'custom)
- (error nil))
- (if (and (featurep 'custom) (fboundp 'custom-declare-variable))
- nil ;; We've got what we needed
- ;; We have the old custom-library, hack around it!
- (defmacro defgroup (&rest args)
- nil)
- (defmacro defcustom (var value doc &rest args)
- (` (defvar (, var) (, value) (, doc))))))
-
- * When `format +' is in effect, Octave uses the following symbols to
- provide more information about the values in a matrix:
-
- + positive real
- - negative real
- i pure imaginary
- c complex
- blank zero
-
- * The ++ and -- operators now work for indexed matrices, and the
- following operators now work:
-
- +=, -=, *=, /=, \=, <<=, >>=, .*=, ./=, .\=, &=, |=
-
- These operators are currently implemented using a relatively
- inefficient brute-force method but hey, they work.
-
- * The built-in variable argv is now a list of strings instead of a
- string vector.
-
- * The value of LOADPATH set by the environment variable
- OCTAVE_PATH, the -p or --path command line options, or on the
- command line is no longer modified to include the default path.
- Instead it is left as specified. Its default value is now ":",
- which tells Octave to search the default path, and the new
- built-in variable DEFAULT_LOADPATH contains the default list of
- directories to search.
-
- * The function file_in_path no longer does any special processing of
- its PATH argument. To search LOADPATH for files, it is now
- generally better to use the new function file_in_loadpath.
-
- * If fread is given a skip parameter, the skip is performed after
- the read instead of before (for compatibility with Matlab).
-
- * The new built-in variable `crash_dumps_octave_core' controls
- whether Octave writes user variables to the file `octave-core'
- when it crashes or is killed by a signal. The default value is 1
- (0 if you use --traditional).
-
- * If LOADPATH contains a doubled colon, the default path is inserted
- in its place. This is similar to the substitution that also takes
- place for leading or trailing colons in the LOADPATH.
-
- * Loops of the form `for i = STRING ... endfor' are now allowed.
-
- * It is now possible to set the iteration limit for lsode using
- lsode_options ("step limit", N).
-
- * New functions:
-
- is_complex -- tell whether a variable is complex
- rehash -- re-initialize the cache of directories in LOADPATH
- graw -- send a string to the gnuplot subprocess
-
- * New functions from Kurt Hornik's Octave-ci package:
-
- In finance (new directory):
-
- fv -- future value of an investment
- fvl -- future value of an initial lump sum investment
- irr -- internal rate of return of an investment
- nper -- number of payments needed for amortizing a loan
- npv -- net present value of a series of payments
- pmt -- amount of periodic payment needed to amortize a loan
- pv -- present value of an investment
- pvl -- present value of an investment that pays off at the end
- rate -- rate of return of an investment
- vol -- volatility of financial time series data
-
- In linear-algebra:
-
- dmult -- rescale the rows of a matrix
-
- In signal:
-
- arch_fit -- fit an ARCH regression model
- arch_rnd -- simulate an ARCH process
- arch_test -- test for conditional heteroscedascity
- arma_rnd -- simulate an ARMA process
- autocor -- compute autocorrelations
- autocov -- compute autocovariances
- autoreg_matrix -- design matrix for autoregressions
- bartlett -- coefficients of the Bartlett (triangular) window
- blackman -- coefficients of the Blackman window
- diffpara -- estimate the fractional differencing parameter
- durbinlevinson -- perform one step of the Durbin-Levinson algorithm
- fractdiff -- compute fractional differences
- hamming -- coefficients of the Hamming window
- hanning -- coefficients of the Hanning window
- hurst -- estimate the Hurst parameter
- periodogram -- compute the periodogram
- rectangle_lw -- rectangular lag window
- rectangle_sw -- rectangular spectral window
- sinetone -- compute a sine tone
- sinewave -- compute a sine wave
- spectral_adf -- spectral density estimation
- spectral_xdf -- spectral density estimation
- spencer -- apply Spencer's 15-point MA filter
- stft -- short-term Fourier transform
- synthesis -- recover a signal from its short-term Fourier transform
- triangle_lw -- triangular lag window
- triangle_sw -- triangular spectral window
- yulewalker -- fit AR model by Yule-Walker method
-
- In statistics/base (new directory):
-
- center -- center by subtracting means
- cloglog -- complementary log-log function
- cor -- compute correlations
- cov -- compute covariances
- cut -- cut data into intervals
- iqr -- interquartile range
- kendall -- kendall's rank correlation tau
- logit -- logit transformation
- mean -- compute arithmetic, geometric, and harmonic mean
- meansq -- compute mean square
- moment -- compute moments
- ppplot -- perform a PP-plot (probability plot)
- probit -- probit transformation
- qqplot -- perform a QQ-plot (quantile plot)
- range -- compute range
- ranks -- compute ranks
- run_count -- count upward runs
- spearman -- spearman's rank correlation rho
- statistics -- compute basic statistics
- studentize -- subtract mean and divide by standard deviation
- table -- cross tabulation
- values -- extract unique elements
- var -- compute variance
-
- In statistics/distributions (new directory):
-
- beta_cdf -- CDF of the Beta distribution
- beta_inv -- Quantile function of the Beta distribution
- beta_pdf -- PDF of the Beta distribution
- beta_rnd -- Random deviates from the Beta distribution
-
- binomial_cdf -- CDF of the binomial distribution
- binomial_inv -- Quantile function of the binomial distribution
- binomial_pdf -- PDF of the binomial distribution
- binomial_rnd -- Random deviates from the binomial distribution
-
- cauchy_cdf -- CDF of the Cauchy distribution
- cauchy_inv -- Quantile function of the Cauchy distribution
- cauchy_pdf -- PDF of the Cauchy distribution
- cauchy_rnd -- Random deviates from the Cauchy distribution
-
- chisquare_cdf -- CDF of the chi-square distribution
- chisquare_inv -- Quantile function of the chi-square distribution
- chisquare_pdf -- PDF of the chi-square distribution
- chisquare_rnd -- Random deviates from the chi-square distribution
-
- discrete_cdf -- CDF of a discrete distribution
- discrete_inv -- Quantile function of a discrete distribution
- discrete_pdf -- PDF of a discrete distribution
- discrete_rnd -- Random deviates from a discrete distribution
-
- empirical_cdf -- CDF of the empirical distribution
- empirical_inv -- Quantile function of the empirical distribution
- empirical_pdf -- PDF of the empirical distribution
- empirical_rnd -- Bootstrap samples from the empirical distribution
-
- exponential_cdf -- CDF of the exponential distribution
- exponential_inv -- Quantile function of the exponential distribution
- exponential_pdf -- PDF of the exponential distribution
- exponential_rnd -- Random deviates from the exponential distribution
-
- f_cdf -- CDF of the F distribution
- f_inv -- Quantile function of the F distribution
- f_pdf -- PDF of the F distribution
- f_rnd -- Random deviates from the F distribution
-
- gamma_cdf -- CDF of the Gamma distribution
- gamma_inv -- Quantile function of the Gamma distribution
- gamma_pdf -- PDF of the Gamma distribution
- gamma_rnd -- Random deviates from the Gamma distribution
-
- geometric_cdf -- CDF of the geometric distribution
- geometric_inv -- Quantile function of the geometric distribution
- geometric_pdf -- PDF of the geometric distribution
- geometric_rnd -- Random deviates from the geometric distribution
-
- hypergeometric_cdf -- CDF of the hypergeometric distribution
- hypergeometric_inv -- Random deviates from hypergeometric distribution
- hypergeometric_pdf -- PDF of the hypergeometric distribution
- hypergeometric_rnd -- Random deviates from hypergeometric distribution
-
- kolmogorov_smirnov_cdf -- CDF of the Kolmogorov-Smirnov distribution
-
- laplace_cdf -- CDF of the Laplace distribution
- laplace_inv -- Quantile function of the Laplace distribution
- laplace_pdf -- PDF of the Laplace distribution
- laplace_rnd -- Random deviates from the Laplace distribution
-
- logistic_cdf -- CDF of the logistic distribution
- logistic_inv -- Quantile function of the logistic distribution
- logistic_pdf -- PDF of the logistic distribution
- logistic_rnd -- Random deviates from the logistic distribution
-
- lognormal_cdf -- CDF of the log normal distribution
- lognormal_inv -- Quantile function of the log normal distribution
- lognormal_pdf -- PDF of the log normal distribution
- lognormal_rnd -- Random deviates from the log normal distribution
-
- normal_cdf -- CDF of the normal distribution
- normal_inv -- Quantile function of the normal distribution
- normal_pdf -- PDF of the normal distribution
- normal_rnd -- Random deviates from the normal distribution
-
- pascal_cdf -- CDF of the Pascal (negative binomial) distribution
- pascal_inv -- Quantile function of the Pascal distribution
- pascal_pdf -- PDF of the Pascal (negative binomial) distribution
- pascal_rnd -- Random deviates from the Pascal distribution
-
- poisson_cdf -- CDF of the Poisson distribution
- poisson_inv -- Quantile function of the Poisson distribution
- poisson_pdf -- PDF of the Poisson distribution
- poisson_rnd -- Random deviates from the Poisson distribution
-
- stdnormal_cdf -- CDF of the standard normal distribution
- stdnormal_inv -- Quantile function of standard normal distribution
- stdnormal_pdf -- PDF of the standard normal distribution
- stdnormal_rnd -- Random deviates from standard normal distribution
-
- t_cdf -- CDF of the t distribution
- t_inv -- Quantile function of the t distribution
- t_pdf -- PDF of the t distribution
- t_rnd -- Random deviates from the t distribution
-
- uniform_cdf -- CDF of the uniform distribution
- uniform_inv -- Quantile function of the uniform distribution
- uniform_pdf -- PDF of the uniform distribution
- uniform_rnd -- Random deviates from the uniform distribution
-
- weibull_cdf -- CDF of the Weibull distribution
- weibull_inv -- Quantile function of the Weibull distribution
- weibull_pdf -- PDF of the Weibull distribution
- weibull_rnd -- Random deviates from the Weibull distribution
-
- wiener_rnd -- Simulate a Wiener process
-
- In statistics/models (new directory):
-
- logistic_regression -- ordinal logistic regression
- logistic_regression_derivatives -- derivates of log-likelihood
- in logistic regression
- logistic_regression_likelihood -- likelihood in logistic regression
-
- In statistics/tests (new directory):
-
- anova -- one-way analysis of variance
- bartlett_test -- bartlett test for homogeneity of variances
- chisquare_test_homogeneity -- chi-square test for homogeneity
- chisquare_test_independence -- chi-square test for independence
- cor_test -- test for zero correlation
- f_test_regression -- test linear hypotheses in linear
- regression model
- hotelling_test -- test for mean of a multivariate normal
- hotelling_test_2 -- compare means of two multivariate normals
- kolmogorov_smirnov_test -- one-sample Kolmogorov-Smirnov test
- kolmogorov_smirnov_test_2 -- two-sample Kolmogorov-Smirnov test
- kruskal_wallis_test -- kruskal-Wallis test
- manova -- one-way multivariate analysis of variance
- mcnemar_test -- mcnemar's test for symmetry
- prop_test_2 -- compare two proportions
- run_test -- run test for independence
- sign_test -- sign test
- t_test -- student's one-sample t test
- t_test_2 -- student's two-sample t test
- t_test_regression -- test one linear hypothesis in linear
- regression model
- u_test -- mann-Whitney U-test
- var_test -- f test to compare two variances
- welch_test -- welch two-sample t test
- wilcoxon_test -- wilcoxon signed-rank test
- z_test -- test for mean of a normal sample with
- known variance
- z_test_2 -- compare means of two normal samples with
- known variances
-
- * The save command now accepts the option -append to save the
- variables at the end of the file, leaving the existing contents.
-
- * New command-line option --no-history (also available using the
- single character option -H) inhibits saving command history.
-
- * The mkoctfile script now accepts -DDEF options and passes them on
- to the C and C++ compilers.
-
- * Running `make check' should work now before you run `make install',
- even if you build a copy of Octave that depends on shared versions
- of the Octave libraries.
-
- * For matrices, x(:) now works and returns a column vector no matter
- what the value of do_fortran_indexing is.
-
- * New keywords __FILE__ and __LINE__ expand to the name of the file
- that is being read and the current input line number, respectively.
-
- * Octave's expression parser is more general and consistent. It is
- now possible to access structure elements and index arbitrary
- values. For example, expressions like
-
- my_home_dir = getpwuid (getuid ()) . dir;
-
- and
-
- svd (x) (1:5)
-
- now work.
-
- * New built-in variable `print_rhs_assign_val' controls what is
- printed when an assignment expression is evaluated. If it is
- zero, the value of the variable on the left hand side (after the
- assignment) is printed. If it is nonzero, the value of the right
- hand side (i.e., the result of the expression) is printed. The
- default value of is zero, so the behavior is the same as in
- previous versions of Octave.
-
- * tmpnam now takes two optional arguments, DIR, and PREFIX. For
- example, tmpnam ("/foo", "bar-") returns a file name like
- "/foo/bar-10773baa". If DIR is omitted or empty, the value of the
- environment variable TMPDIR, or /tmp is used. If PREFIX is
- omitted, "oct-" is used.
-
- * The built-in variable `PWD' has been removed. If you need to get
- the value of the current working directory, use the pwd() function
- instead.
-
- * New operators. Octave's parser now recognizes the following
- operators: << >> += -= *= /= .+= .-= .*= ./= &= |= <<= >>=. So
- far, there are only a few operations defined that actually use
- them (this should change before 2.1 is released).
-
- * New built-in data types:
-
- logical:
-
- A true value is represented by 1, and false value by 0.
- Comparison operations like <, <=, ==, >, >=, and != now return
- logical values. Indexing operations that use zero-one style
- indexing must now use logical values. You can use the new
- function logical() to convert a numeric value to a logical
- value. This avoids the need for the built-in variable
- `prefer_zero_one_indexing', so it has been removed. Logical
- values are automatically converted to numeric values where
- appropriate.
-
- file:
-
- A file object represents an open Octave stream object. The
- fopen function now returns a file object instead of an integer.
- File objects can be converted to integers automatically, and the
- other functions that work with file ids still work with
- integers, so this change should be backward compatible.
-
- The binary left-shift operator `<<' has been defined to work as
- in C++ for file objects and built-in types. For example,
-
- my_stream = fopen ("foo", "w");
- my_stream << "x = " << pi << " marks the spot\n";
-
- writes `x = 3.1416 marks the spot' in the file foo.
-
- The built-in variables stdin, stdout, and stderr are now also
- file objects instead of integers.
-
- list:
-
- A list is an array of Octave objects. It can be indexed using
- the normal indexing operator. For example,
-
- x = list ([1,2;3,4], 1, "foo");
- stdout << x(2) << "\n"
- 1
- stdout << x;
- (
- [1] =
-
- 1 2
- 3 4
-
- [2] = 1
- [3] = foo
- )
-
- There is currently no special syntax for creating lists; you
- must use the list function.
-
- * Commas in global statements are no longer special. They are now
- treated as command separators. This removes a conflict in the
- grammar and is consistent with the way Matlab behaves. The
- variable `warn_comma_in_global_decl' has been eliminated.
-
- * It is now possible to declare static variables that retain their
- values across function calls. For example,
-
- function ncall = f () static n = 0; ncall = ++n; endfunction
-
- defines a function that returns the number of times that it has
- been called.
-
- * Within user-defined functions, the new automatic variable `argn'
- contains the names of the arguments that were passed to the
- function. For example,
-
- function f (...)
- for i = 1:nargin
- stdout << "argn(" << i << ") = `" << deblank (argn(i,:)) \
- << "' and its value is " << va_arg () << "\n";
- endfor
- endfunction
- f (1+2, "foo", sin (pi/2))
-
- prints
-
- argn(1) = `1 + 2' and its value is 3
- argn(2) = `"foo"' and its value is foo
- argn(3) = `sin (pi)' and its value is 1
-
- on the standard output stream. If nargin is zero, argn is not defined.
- * Functions like quad, fsolve, and lsode can take either a function
- name or a simple function body as a string. For example,
-
- quad ("sqrt (x)", 0, 1)
-
- is equivalent to
-
- function y = f (x) y = sqrt (x); endfunction
- quad ("f", 0, 1)
-
- * If the argument to eig() is symmetric, Octave uses the specialized
- Lapack subroutine for symmetric matrices for a significant
- increase in performance.
-
- * If the argument to lsode that names the user-supplied function is
- a 2-element string array, the second element is taken as the name
- of the Jacobian function. The named function should have the
- following form:
-
- JAC = f (X, T)
-
- where JAC is the Jacobian matrix of partial derivatives of the
- right-hand-side functions that define the set of differential
- equations with respect to the state vector X.
-
- * Global variables are now initialized to the empty matrix, for
- compatibility with Matlab.
-
- * Explicit initialization of global variables only happens once.
- For example, after the following statements are evaluated, g still
- has the value 1.
-
- global g = 1
- global g = 2
-
- This is useful for initializing global variables that are used to
- maintain state information that is shared among several functions.
-
- * Structure elements completion on the command line actually works
- now.
-
- * The new built-in variable `fixed_point_format' controls whether
- Octave uses a scaled fixed-point format for displaying matrices.
- The default value is 0 unless you use --traditional.
-
- * The function sumsq now computes sum (x .* conj (x)) for complex values.
-
- * The new built-in variable max_recursion_depth allows you to
- prevent Octave from attempting infinite recursion. The default
- value is 256.
-
- * Octave now uses kpathsea 3.2.
-
- * New configure option, --enable-readline.
-
- * New configure option, --enable-static.
-
-Summary of changes for version 2.0.7 (1997-06-04):
--------------------------------------------------
-
- This is a bug-fixing release. There are no new user-visible features.
-
-Summary of changes for version 2.0.6 (1997-05-27):
--------------------------------------------------
-
- This is primarily a bug-fixing release. There are only a few new
- user-visible features.
-
- * The new built-in variable default_eval_print_flag controls whether
- Octave prints the results of commands executed by eval() that do
- not end with semicolons. The default is 1.
-
- * The new built-in constant OCTAVE_HOME specifies the top-level
- directory where Octave is installed.
-
- * Octave no longer includes functions to work with NPSOL or QPSOL,
- because they are not free software.
-
- * The new built-in variable called kluge_procbuf_delay specifies the
- number of microseconds to delay in the parent process after
- forking. By default on gnu-win32 systems, it's set to 500000 (1/2
- second). On other systems, the default value is 0. Delaying for
- a short time in the parent after forking seems to avoid problems
- in which communicating with subprocesses via pipes would sometimes
- cause Octave to hang. I doubt that the delay is really the right
- solution. If anyone has a better idea, I'd love to hear it.
-
-Summary of changes for version 2.0.5 (1997-03-01):
--------------------------------------------------
-
- * A `switch' statement is now available. See the Statements chapter
- in the manual for details.
-
- * Commands like ls, save, and cd may now also be used as formal
- parameters for functions.
-
- * More tests.
-
-Summary of changes for version 2.0.4 (1997-02-20):
--------------------------------------------------
-
- * It is now possible to use commands like ls, save, and cd as simple
- variable names. They still cannot be used as formal parameters
- for functions, or as the names of structure variables. Failed
- assignments leave them undefined (you can recover the original
- function definition using clear).
-
- * Is is now possible to invoke commands like ls, save, and cd as
- normal functions (for example, load ("foo", "x", "y", "z")).
-
-Summary of changes for version 2.0.3 (1997-02-18):
--------------------------------------------------
-
- * The manual has been completely revised and now corresponds much
- more closely to the features of the current version.
-
- * The return value for assignment expressions is now the RHS since
- that is more consistent with the way other programming languages
- work. However, Octave still prints the entire LHS value so that
-
- x = zeros (1, 2);
- x(2) = 1
-
- still prints
-
- x =
-
- 0 1
-
- but an assignment like
-
- z = x(2) = 1
-
- sets z to 1 (not [ 0, 1 ] as in previous versions of Octave).
-
- * It is now much easier to make binary distributions. See the
- Binary Distributions section of the manual for more details.
-
-Summary of changes for version 2.0.2 (1997-01-27):
--------------------------------------------------
-
- * Octave now stops executing commands from a script file if an error
- is encountered.
-
- * The return, and break commands now cause Octave to quit executing
- commands from script files. When used in invalid contexts, the
- break, continue, and return commands are now simply ignored
- instead of producing parse errors.
-
- * size ("") is now [0, 0].
-
- * New functions:
-
- sleep -- pause execution for a specified number of seconds
- usleep -- pause execution for a specified number of microseconds
-
-Summary of changes for version 2.0 (1996-12-10):
------------------------------------------------
-
- * The set and show commands for setting and displaying gnuplot
- parameters have been replaced by gset and gshow. This change will
- probably break lots of things, but it is necessary to allow for
- compatibility with the Matlab graphics and GUI commands in a
- future version of Octave. (For now, the old set and show commands
- do work, but they print an annoying warning message to try to get
- people to switch to using gset.)
-
- * Octave has been mostly ported to Windows NT and Windows 95 using
- the beta 17 release of the Cygnus GNU-WIN32 tools. Not everything
- works, but it is usable. See the file README.WINDOWS for more
- information.
-
- * Dynamic linking works on more systems using dlopen() and friends
- (most modern Unix systems) or shl_load() and friends (HP/UX
- systems). A simple example is provided in examples/hello.cc.
- For this feature to work, you must configure Octave with
- --enable-shared. You may also need to have a shared-library
- version of libg++ and libstdc++.
-
- * New data types can be added to Octave by writing a C++ class. On
- systems that support dynamic linking, new data types can be added
- to an already running Octave binary. A simple example appears in
- the file examples/make_int.cc. Other examples are the standard
- Octave data types defined in the files src/ov*.{h,cc} and
- src/op-*.cc.
-
- * The configure option --enable-bounds-check turns on bounds
- checking on element references for Octave's internal array and
- matrix classes. It's enabled by default. To disable this
- feature, configure Octave with --disable-bounds-check.
-
- * The C-style I/O functions (fopen, fprintf, etc.) have been
- rewritten to be more compatible with Matlab. The fputs function
- has also been added. Usage of the *printf functions that was
- allowed in previous versions of Octave should still work.
- However, there is no way to make the new versions of the *scanf
- functions compatible with Matlab *and* previous versions of
- Octave. An optional argument to the *scanf functions is now
- available to make them behave in a way that is compatible with
- previous versions of Octave.
-
- * Octave can now read files that contain columns of numbers only,
- with no header information. The name of the loaded variable is
- constructed from the file name. Each line in the file must have
- the same number of elements.
-
- * The interface to the pager has changed. The new built-in variable
- `page_output_immediately' controls when Octave sends output to the
- pager. If it is nonzero, Octave sends output to the pager as soon
- as it is available. Otherwise, Octave buffers its output and
- waits until just before the prompt is printed to flush it to the
- pager.
-
- * Expressions of the form
-
- A(i,j) = x
-
- where X is a scalar and the indices i and j define a matrix of
- elements now work as you would expect rather than giving an error.
- I am told that this is how Matlab 5.0 will behave when it is
- released.
-
- * Indexing of character strings now works.
-
- * The echo command has been implemented.
-
- * The document command is now a regular function.
-
- * New method for handling errors:
-
- try
- BODY
- catch
- CLEANUP
- end_try_catch
-
- Where BODY and CLEANUP are both optional and may contain any
- Octave expressions or commands. The statements in CLEANUP are
- only executed if an error occurs in BODY.
-
- No warnings or error messages are printed while BODY is
- executing. If an error does occur during the execution of BODY,
- CLEANUP can access the text of the message that would have been
- printed in the builtin constant __error_text__. This is the same
- as eval (TRY, CATCH) (which may now also use __error_text__) but
- it is more efficient since the commands do not need to be parsed
- each time the TRY and CATCH statements are evaluated.
-
- * Octave no longer parses the help command by grabbing everything
- after the keyword `help' until a newline character is read. To
- get help for `;' or `,', now, you need to use the command
- `help semicolon' or `help comma'.
-
- * Octave's parser now does some simple constant folding. This means
- that expressions like 3*i are now evaluated only once, when a
- function is compiled, and the right hand side of expressions like
- a = [1,2;3,4] are treated as true matrix constants rather than
- lists of elements which must be evaluated each time they are
- needed.
-
- * Built-in variables that can take values of "true" and "false" can
- now also be set to any nonzero scalar value to indicate "true",
- and 0 to indicate "false".
-
- * New built-in variables `history_file', `history_size', and
- `saving_history'.
-
- * New built-in variable `string_fill_char' specifies the character
- to fill with when creating arrays of strings.
-
- * If the new built-in variable `gnuplot_has_frames' is nonzero,
- Octave assumes that your copy of gnuplot includes support for
- multiple plot windows when using X11.
-
- If the new built-in variable `gnuplot_has_multiplot' is nonzero,
- Octave assumes that your copy of gnuplot has the multiplot support
- that is included in recent 3.6beta releases.
-
- The initial values of these variables are determined by configure,
- but can be changed in your startup script or at the command line
- in case configure got it wrong, or if you upgrade your gnuplot
- installation.
-
- * The new plot function `figure' allows multiple plot windows when
- using newer versions of gnuplot with X11.
-
- * Octave now notices when the plotter has exited unexpectedly.
-
- * New built-in variable `warn_missing_semicolon'. If nonzero, Octave
- will warn when statements in function definitions don't end in
- semicolons. The default value is 0.
-
- * Octave now attempts to continue after floating point exceptions
- or out-of-memory errors.
-
- * If Octave crashes, it now attempts to save all user-defined
- variables in a file named `octave-core' in the current directory
- before exiting.
-
- * It is now possible to get the values of individual option settings
- for the dassl, fsolve, lsode, npsol, qpsol, and quad functions
- using commands like
-
- dassl_reltol = dassl_options ("relative tolerance");
-
- * The svd() function no longer computes the left and right singular
- matrices unnecessarily. This can significantly improve
- performance for large matrices if you are just looking for the
- singular values.
-
- * The filter() function is now a built-in function.
-
- * New function randn() returns a pseudo-random number from a normal
- distribution. The rand() and randn() functions have separate
- seeds and generators.
-
- * Octave's command-line arguments are now available in the built-in
- variable `argv'. The program name is also available in the
- variables `program_invocation_name' and `program_name'. If
- executing a script from the command line (e.g., octave foo.m) or
- using the `#! /bin/octave' hack, the program name is set to the
- name of the script.
-
- * New built-in variable `completion_append_char' used as the
- character to append to successful command-line completion
- attempts. The default is " " (a single space).
-
- * Octave now uses a modified copy of the readline library from
- version 1.14.5 of GNU bash.
-
- * In prompt strings, `\H' expands to the whole host name.
-
- * New built-in variable `beep_on_error'. If nonzero, Octave will try
- to ring your terminal's bell before printing an error message.
- The default value is 0.
-
- * For functions defined from files, the type command now prints the
- text of the file. You can still get the text reconstructed from
- the parse tree by using the new option -t (-transformed).
-
- * New command-line argument --traditional sets the following
- preference variables for compatibility with Matlab:
-
- PS1 = ">> "
- PS2 = ""
- beep_on_error = 1
- default_save_format = "mat-binary"
- define_all_return_values = 1
- do_fortran_indexing = 1
- empty_list_elements_ok = 1
- implicit_str_to_num_ok = 1
- ok_to_lose_imaginary_part = 1
- page_screen_output = 0
- prefer_column_vectors = 0
- prefer_zero_one_indexing = 1
- print_empty_dimensions = 0
- treat_neg_dim_as_zero = 1
- warn_function_name_clash = 0
- whitespace_in_literal_matrix = "traditional"
-
- * New functions:
-
- readdir -- returns names of files in directory as array of strings
- mkdir -- create a directory
- rmdir -- remove a directory
- rename -- rename a file
- unlink -- delete a file
- umask -- set permission mask for file creation
- stat -- get information about a file
- lstat -- get information about a symbolic link
- glob -- perform filename globbing
- fnmatch -- match strings with filename globbing patterns
- more -- turn the pager on or off
- gammaln -- alias for lgamma
-
- * New audio functions from Andreas Weingessel
- .
-
- lin2mu -- linear to mu-law encoding
- loadaudio -- load an audio file to a vector
- mu2lin -- mu-law to linear encoding
- playaudio -- play an audio file
- record -- record sound and store in vector
- saveaudio -- save a vector as an audio file
- setaudio -- executes mixer shell command
-
- * New plotting functions from Vinayak Dutt. Ones dealing with
- multiple plots on one page require features from gnuplot 3.6beta
- (or later).
-
- bottom_title -- put title at the bottom of the plot
- mplot -- multiplot version of plot
- multiplot -- switch multiple-plot mode on or off
- oneplot -- return to one plot per page
- plot_border -- put a border around plots
- subplot -- position multiple plots on a single page
- subwindow -- set subwindow position for next plot
- top_title -- put title at the top of the plot
- zlabel -- put a label on the z-axis
-
- * New string functions
-
- bin2dec -- convert a string of ones and zeros to an integer
- blanks -- create a string of blanks
- deblank -- delete trailing blanks
- dec2bin -- convert an integer to a string of ones and zeros
- dec2hex -- convert an integer to a hexadecimal string
- findstr -- locate occurrences of one string in another
- hex2dec -- convert a hexadecimal string to an integer
- index -- return position of first occurrence a string in another
- rindex -- return position of last occurrence a string in another
- split -- divide one string into pieces separated by another
- str2mat -- create a string matrix from a list of strings
- strrep -- replace substrings in a string
- substr -- extract a substring
-
- The following functions return a matrix of ones and zeros.
- Elements that are nonzero indicate that the condition was true for
- the corresponding character in the string array.
-
- isalnum -- letter or a digit
- isalpha -- letter
- isascii -- ascii
- iscntrl -- control character
- isdigit -- digit
- isgraph -- printable (but not space character)
- islower -- lower case
- isprint -- printable (including space character)
- ispunct -- punctuation
- isspace -- whitespace
- isupper -- upper case
- isxdigit -- hexadecimal digit
-
- These functions return new strings.
-
- tolower -- convert to lower case
- toupper -- convert to upper case
-
- * New function, fgetl. Both fgetl and fgets accept an optional
- second argument that specifies a maximum number of characters to
- read, and the function fgets is now compatible with Matlab.
-
- * Printing in hexadecimal format now works (format hex). It is also
- possible to print the internal bit representation of a value
- (format bit). Note that these formats are only implemented for
- numeric values.
-
- * Additional structure features:
-
- -- Name completion now works for structures.
-
- -- Values and names of structure elements are now printed by
- default. The new built-in variable `struct_levels_to_print'
- controls the depth of nested structures to print. The default
- value is 2.
-
- -- New functions:
-
- struct_contains (S, NAME) -- returns 1 if S is a structure with
- element NAME; otherwise returns 0.
-
- struct_elements (S) -- returns the names of all elements
- of structure S in an array of strings.
-
- * New io/subprocess functions:
-
- fputs -- write a string to a file with no formatting
- popen2 -- start a subprocess with 2-way communication
- mkfifo -- create a FIFO special file
- popen -- open a pipe to a subprocess
- pclose -- close a pipe from a subprocess
- waitpid -- check the status of or wait for subprocesses
-
- * New time functions:
-
- asctime -- format time structure according to local format
- ctime -- equivalent to `asctime (localtime (TMSTRUCT))'
- gmtime -- return time structure corresponding to UTC
- localtime -- return time structure corresponding to local time zone
- strftime -- print given time structure using specified format
- time -- return current time
-
- The `clock' and `date' functions are now implemented in M-files
- using these basic functions.
-
- * Access to additional Unix system calls:
-
- dup2 -- duplicate a file descriptor
- exec -- replace current process with a new process
- fcntl -- control open file descriptors
- fork -- create a copy of the current process
- getpgrp -- return the process group id of the current process
- getpid -- return the process id of the current process
- getppid -- return the process id of the parent process
- getuid -- return the real user id of the current process
- getgid -- return the real group id of the current process
- geteuid -- return the effective user id of the current process
- getegid -- return the effective group id of the current process
- pipe -- create an interprocess channel
-
- * Other new functions:
-
- commutation_matrix -- compute special matrix form
- duplication_matrix -- compute special matrix form
- common_size.m -- bring arguments to a common size
- completion_matches -- perform command completion on string
- tilde_expand -- perform tilde expansion on string
-
- meshgrid -- compatible with Matlab's meshgrid function
- tmpnam -- replaces octave_tmp_file_name
- atexit -- register functions to be called when Octave exits
- putenv -- define an environment variable
- bincoeff -- compute binomial coefficients
- nextpow2 -- compute the next power of 2 greater than a number
- detrend -- remove a best fit polynomial from data
- erfinv -- inverse error function
- shift -- perform a circular shift on the elements of a matrix
- pow2 -- compute 2 .^ x
- log2 -- compute base 2 logarithms
- diff -- compute differences of matrix elements
- vech -- stack columns of a matrix below the diagonal
- vec -- stack columns of a matrix to form a vector
- xor -- compute exclusive or
-
- * Functions for getting info from the password database on Unix systems:
-
- getpwent -- read entry from password-file stream, opening if necessary
- getpwuid -- search for password entry with matching user ID
- getpwnam -- search for password entry with matching username
- setpwent -- rewind the password-file stream
- endpwent -- close the password-file stream
-
- * Functions for getting info from the group database on Unix systems:
-
- getgrent -- read entry from group-file stream, opening if necessary
- getgrgid -- search for group entry with matching group ID
- getgrnam -- search for group entry with matching group name
- setgrent -- rewind the group-file stream
- endgrent -- close the group-file stream
-
- * The New function octave_config_info returns a structure containing
- information about how Octave was configured and compiled.
-
- * New function getrusage returns a structure containing system
- resource usage statistics. The `cputime' function is now defined
- in an M-file using getrusage.
-
- * The info reader is now a separate binary that runs as a
- subprocess. You still need the info reader distributed with
- Octave though, because there are some new command-line arguments
- that are not yet available in the public release of Info.
-
- * There is a new built-in variable, INFO_PROGRAM, which is used as
- the name of the info program to run. Its initial value is
- $OCTAVE_HOME/lib/octave/VERSION/exec/ARCH/info, but that value can
- be overridden by the environment variable OCTAVE_INFO_PROGRAM, or
- the command line argument --info-program NAME, or by setting the
- value of INFO_PROGRAM in a startup script.
-
- * There is a new built-in variable, EXEC_PATH, which is used as
- the list of directories to search when executing subprograms. Its
- initial value is taken from the environment variable
- OCTAVE_EXEC_PATH (if it exists) or PATH, but that value can be
- overridden by the command line argument --exec-path PATH, or
- by setting the value of EXEC_PATH in a startup script. If the
- EXEC_PATH begins (ends) with a colon, the directories
- $OCTAVE_HOME/lib/octave/VERSION/exec/ARCH and $OCTAVE_HOME/bin are
- prepended (appended) to EXEC_PATH (if you don't specify a value
- for EXEC_PATH explicitly, these special directories are prepended
- to your PATH).
-
- * If it is present, Octave will now use an `ls-R' database file to
- speed up recursive path searching. Octave looks for a file called
- ls-R in the directory specified by the environment variable
- OCTAVE_DB_DIR. If that is not set but the environment variable
- OCTAVE_HOME is set, Octave looks in $OCTAVE_HOME/lib/octave.
- Otherwise, Octave looks in the directory $datadir/octave (normally
- /usr/local/lib/octave).
-
- * New examples directory.
-
- * There is a new script, mkoctfile, that can be used to create .oct
- files suitable for dynamic linking.
-
- * Many more bug fixes.
-
- * ChangeLogs are now kept in each subdirectory.
-
-See NEWS.1 for old news.
diff -r 7ecd07721cca -r 86ddba86efbe etc/NEWS.2.md
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/NEWS.2.md Wed Dec 08 22:43:24 2021 +0900
@@ -0,0 +1,1036 @@
+Summary of changes for version 2.1.x (1997-06-05 -- 2006-03-20):
+---------------------------------------------------------------
+
+ * Given a matrix, X, and a boolean index, idx, of the same shape as
+ X, X(idx) and X(idx) = RHS now work no matter what the value of
+ do_fortran_indexing is.
+
+ * If you are using GNU Emacs 19.34 or earlier, you will need to add
+ the following code to your ~/.emacs file in order to use Emacs
+ Octave mode:
+
+ ;; Set up the custom library.
+ ;; taken from http://www.dina.kvl.dk/~abraham/custom/
+ (eval-and-compile
+ (condition-case ()
+ (require 'custom)
+ (error nil))
+ (if (and (featurep 'custom) (fboundp 'custom-declare-variable))
+ nil ;; We've got what we needed
+ ;; We have the old custom-library, hack around it!
+ (defmacro defgroup (&rest args)
+ nil)
+ (defmacro defcustom (var value doc &rest args)
+ (` (defvar (, var) (, value) (, doc))))))
+
+ * When `format +' is in effect, Octave uses the following symbols to
+ provide more information about the values in a matrix:
+
+ + positive real
+ - negative real
+ i pure imaginary
+ c complex
+ blank zero
+
+ * The ++ and -- operators now work for indexed matrices, and the
+ following operators now work:
+
+ +=, -=, *=, /=, \=, <<=, >>=, .*=, ./=, .\=, &=, |=
+
+ These operators are currently implemented using a relatively
+ inefficient brute-force method but hey, they work.
+
+ * The built-in variable argv is now a list of strings instead of a
+ string vector.
+
+ * The value of LOADPATH set by the environment variable
+ OCTAVE_PATH, the -p or --path command line options, or on the
+ command line is no longer modified to include the default path.
+ Instead it is left as specified. Its default value is now ":",
+ which tells Octave to search the default path, and the new
+ built-in variable DEFAULT_LOADPATH contains the default list of
+ directories to search.
+
+ * The function file_in_path no longer does any special processing of
+ its PATH argument. To search LOADPATH for files, it is now
+ generally better to use the new function file_in_loadpath.
+
+ * If fread is given a skip parameter, the skip is performed after
+ the read instead of before (for compatibility with Matlab).
+
+ * The new built-in variable `crash_dumps_octave_core' controls
+ whether Octave writes user variables to the file `octave-core'
+ when it crashes or is killed by a signal. The default value is 1
+ (0 if you use --traditional).
+
+ * If LOADPATH contains a doubled colon, the default path is inserted
+ in its place. This is similar to the substitution that also takes
+ place for leading or trailing colons in the LOADPATH.
+
+ * Loops of the form `for i = STRING ... endfor' are now allowed.
+
+ * It is now possible to set the iteration limit for lsode using
+ lsode_options ("step limit", N).
+
+ * New functions:
+
+ is_complex -- tell whether a variable is complex
+ rehash -- re-initialize the cache of directories in LOADPATH
+ graw -- send a string to the gnuplot subprocess
+
+ * New functions from Kurt Hornik's Octave-ci package:
+
+ In finance (new directory):
+
+ fv -- future value of an investment
+ fvl -- future value of an initial lump sum investment
+ irr -- internal rate of return of an investment
+ nper -- number of payments needed for amortizing a loan
+ npv -- net present value of a series of payments
+ pmt -- amount of periodic payment needed to amortize a loan
+ pv -- present value of an investment
+ pvl -- present value of an investment that pays off at the end
+ rate -- rate of return of an investment
+ vol -- volatility of financial time series data
+
+ In linear-algebra:
+
+ dmult -- rescale the rows of a matrix
+
+ In signal:
+
+ arch_fit -- fit an ARCH regression model
+ arch_rnd -- simulate an ARCH process
+ arch_test -- test for conditional heteroscedascity
+ arma_rnd -- simulate an ARMA process
+ autocor -- compute autocorrelations
+ autocov -- compute autocovariances
+ autoreg_matrix -- design matrix for autoregressions
+ bartlett -- coefficients of the Bartlett (triangular) window
+ blackman -- coefficients of the Blackman window
+ diffpara -- estimate the fractional differencing parameter
+ durbinlevinson -- perform one step of the Durbin-Levinson algorithm
+ fractdiff -- compute fractional differences
+ hamming -- coefficients of the Hamming window
+ hanning -- coefficients of the Hanning window
+ hurst -- estimate the Hurst parameter
+ periodogram -- compute the periodogram
+ rectangle_lw -- rectangular lag window
+ rectangle_sw -- rectangular spectral window
+ sinetone -- compute a sine tone
+ sinewave -- compute a sine wave
+ spectral_adf -- spectral density estimation
+ spectral_xdf -- spectral density estimation
+ spencer -- apply Spencer's 15-point MA filter
+ stft -- short-term Fourier transform
+ synthesis -- recover a signal from its short-term Fourier transform
+ triangle_lw -- triangular lag window
+ triangle_sw -- triangular spectral window
+ yulewalker -- fit AR model by Yule-Walker method
+
+ In statistics/base (new directory):
+
+ center -- center by subtracting means
+ cloglog -- complementary log-log function
+ cor -- compute correlations
+ cov -- compute covariances
+ cut -- cut data into intervals
+ iqr -- interquartile range
+ kendall -- kendall's rank correlation tau
+ logit -- logit transformation
+ mean -- compute arithmetic, geometric, and harmonic mean
+ meansq -- compute mean square
+ moment -- compute moments
+ ppplot -- perform a PP-plot (probability plot)
+ probit -- probit transformation
+ qqplot -- perform a QQ-plot (quantile plot)
+ range -- compute range
+ ranks -- compute ranks
+ run_count -- count upward runs
+ spearman -- spearman's rank correlation rho
+ statistics -- compute basic statistics
+ studentize -- subtract mean and divide by standard deviation
+ table -- cross tabulation
+ values -- extract unique elements
+ var -- compute variance
+
+ In statistics/distributions (new directory):
+
+ beta_cdf -- CDF of the Beta distribution
+ beta_inv -- Quantile function of the Beta distribution
+ beta_pdf -- PDF of the Beta distribution
+ beta_rnd -- Random deviates from the Beta distribution
+
+ binomial_cdf -- CDF of the binomial distribution
+ binomial_inv -- Quantile function of the binomial distribution
+ binomial_pdf -- PDF of the binomial distribution
+ binomial_rnd -- Random deviates from the binomial distribution
+
+ cauchy_cdf -- CDF of the Cauchy distribution
+ cauchy_inv -- Quantile function of the Cauchy distribution
+ cauchy_pdf -- PDF of the Cauchy distribution
+ cauchy_rnd -- Random deviates from the Cauchy distribution
+
+ chisquare_cdf -- CDF of the chi-square distribution
+ chisquare_inv -- Quantile function of the chi-square distribution
+ chisquare_pdf -- PDF of the chi-square distribution
+ chisquare_rnd -- Random deviates from the chi-square distribution
+
+ discrete_cdf -- CDF of a discrete distribution
+ discrete_inv -- Quantile function of a discrete distribution
+ discrete_pdf -- PDF of a discrete distribution
+ discrete_rnd -- Random deviates from a discrete distribution
+
+ empirical_cdf -- CDF of the empirical distribution
+ empirical_inv -- Quantile function of the empirical distribution
+ empirical_pdf -- PDF of the empirical distribution
+ empirical_rnd -- Bootstrap samples from the empirical distribution
+
+ exponential_cdf -- CDF of the exponential distribution
+ exponential_inv -- Quantile function of the exponential distribution
+ exponential_pdf -- PDF of the exponential distribution
+ exponential_rnd -- Random deviates from the exponential distribution
+
+ f_cdf -- CDF of the F distribution
+ f_inv -- Quantile function of the F distribution
+ f_pdf -- PDF of the F distribution
+ f_rnd -- Random deviates from the F distribution
+
+ gamma_cdf -- CDF of the Gamma distribution
+ gamma_inv -- Quantile function of the Gamma distribution
+ gamma_pdf -- PDF of the Gamma distribution
+ gamma_rnd -- Random deviates from the Gamma distribution
+
+ geometric_cdf -- CDF of the geometric distribution
+ geometric_inv -- Quantile function of the geometric distribution
+ geometric_pdf -- PDF of the geometric distribution
+ geometric_rnd -- Random deviates from the geometric distribution
+
+ hypergeometric_cdf -- CDF of the hypergeometric distribution
+ hypergeometric_inv -- Random deviates from hypergeometric distribution
+ hypergeometric_pdf -- PDF of the hypergeometric distribution
+ hypergeometric_rnd -- Random deviates from hypergeometric distribution
+
+ kolmogorov_smirnov_cdf -- CDF of the Kolmogorov-Smirnov distribution
+
+ laplace_cdf -- CDF of the Laplace distribution
+ laplace_inv -- Quantile function of the Laplace distribution
+ laplace_pdf -- PDF of the Laplace distribution
+ laplace_rnd -- Random deviates from the Laplace distribution
+
+ logistic_cdf -- CDF of the logistic distribution
+ logistic_inv -- Quantile function of the logistic distribution
+ logistic_pdf -- PDF of the logistic distribution
+ logistic_rnd -- Random deviates from the logistic distribution
+
+ lognormal_cdf -- CDF of the log normal distribution
+ lognormal_inv -- Quantile function of the log normal distribution
+ lognormal_pdf -- PDF of the log normal distribution
+ lognormal_rnd -- Random deviates from the log normal distribution
+
+ normal_cdf -- CDF of the normal distribution
+ normal_inv -- Quantile function of the normal distribution
+ normal_pdf -- PDF of the normal distribution
+ normal_rnd -- Random deviates from the normal distribution
+
+ pascal_cdf -- CDF of the Pascal (negative binomial) distribution
+ pascal_inv -- Quantile function of the Pascal distribution
+ pascal_pdf -- PDF of the Pascal (negative binomial) distribution
+ pascal_rnd -- Random deviates from the Pascal distribution
+
+ poisson_cdf -- CDF of the Poisson distribution
+ poisson_inv -- Quantile function of the Poisson distribution
+ poisson_pdf -- PDF of the Poisson distribution
+ poisson_rnd -- Random deviates from the Poisson distribution
+
+ stdnormal_cdf -- CDF of the standard normal distribution
+ stdnormal_inv -- Quantile function of standard normal distribution
+ stdnormal_pdf -- PDF of the standard normal distribution
+ stdnormal_rnd -- Random deviates from standard normal distribution
+
+ t_cdf -- CDF of the t distribution
+ t_inv -- Quantile function of the t distribution
+ t_pdf -- PDF of the t distribution
+ t_rnd -- Random deviates from the t distribution
+
+ uniform_cdf -- CDF of the uniform distribution
+ uniform_inv -- Quantile function of the uniform distribution
+ uniform_pdf -- PDF of the uniform distribution
+ uniform_rnd -- Random deviates from the uniform distribution
+
+ weibull_cdf -- CDF of the Weibull distribution
+ weibull_inv -- Quantile function of the Weibull distribution
+ weibull_pdf -- PDF of the Weibull distribution
+ weibull_rnd -- Random deviates from the Weibull distribution
+
+ wiener_rnd -- Simulate a Wiener process
+
+ In statistics/models (new directory):
+
+ logistic_regression -- ordinal logistic regression
+ logistic_regression_derivatives -- derivates of log-likelihood
+ in logistic regression
+ logistic_regression_likelihood -- likelihood in logistic regression
+
+ In statistics/tests (new directory):
+
+ anova -- one-way analysis of variance
+ bartlett_test -- bartlett test for homogeneity of variances
+ chisquare_test_homogeneity -- chi-square test for homogeneity
+ chisquare_test_independence -- chi-square test for independence
+ cor_test -- test for zero correlation
+ f_test_regression -- test linear hypotheses in linear
+ regression model
+ hotelling_test -- test for mean of a multivariate normal
+ hotelling_test_2 -- compare means of two multivariate normals
+ kolmogorov_smirnov_test -- one-sample Kolmogorov-Smirnov test
+ kolmogorov_smirnov_test_2 -- two-sample Kolmogorov-Smirnov test
+ kruskal_wallis_test -- kruskal-Wallis test
+ manova -- one-way multivariate analysis of variance
+ mcnemar_test -- mcnemar's test for symmetry
+ prop_test_2 -- compare two proportions
+ run_test -- run test for independence
+ sign_test -- sign test
+ t_test -- student's one-sample t test
+ t_test_2 -- student's two-sample t test
+ t_test_regression -- test one linear hypothesis in linear
+ regression model
+ u_test -- mann-Whitney U-test
+ var_test -- f test to compare two variances
+ welch_test -- welch two-sample t test
+ wilcoxon_test -- wilcoxon signed-rank test
+ z_test -- test for mean of a normal sample with
+ known variance
+ z_test_2 -- compare means of two normal samples with
+ known variances
+
+ * The save command now accepts the option -append to save the
+ variables at the end of the file, leaving the existing contents.
+
+ * New command-line option --no-history (also available using the
+ single character option -H) inhibits saving command history.
+
+ * The mkoctfile script now accepts -DDEF options and passes them on
+ to the C and C++ compilers.
+
+ * Running `make check' should work now before you run `make install',
+ even if you build a copy of Octave that depends on shared versions
+ of the Octave libraries.
+
+ * For matrices, x(:) now works and returns a column vector no matter
+ what the value of do_fortran_indexing is.
+
+ * New keywords __FILE__ and __LINE__ expand to the name of the file
+ that is being read and the current input line number, respectively.
+
+ * Octave's expression parser is more general and consistent. It is
+ now possible to access structure elements and index arbitrary
+ values. For example, expressions like
+
+ my_home_dir = getpwuid (getuid ()) . dir;
+
+ and
+
+ svd (x) (1:5)
+
+ now work.
+
+ * New built-in variable `print_rhs_assign_val' controls what is
+ printed when an assignment expression is evaluated. If it is
+ zero, the value of the variable on the left hand side (after the
+ assignment) is printed. If it is nonzero, the value of the right
+ hand side (i.e., the result of the expression) is printed. The
+ default value of is zero, so the behavior is the same as in
+ previous versions of Octave.
+
+ * tmpnam now takes two optional arguments, DIR, and PREFIX. For
+ example, tmpnam ("/foo", "bar-") returns a file name like
+ "/foo/bar-10773baa". If DIR is omitted or empty, the value of the
+ environment variable TMPDIR, or /tmp is used. If PREFIX is
+ omitted, "oct-" is used.
+
+ * The built-in variable `PWD' has been removed. If you need to get
+ the value of the current working directory, use the pwd() function
+ instead.
+
+ * New operators. Octave's parser now recognizes the following
+ operators: << >> += -= *= /= .+= .-= .*= ./= &= |= <<= >>=. So
+ far, there are only a few operations defined that actually use
+ them (this should change before 2.1 is released).
+
+ * New built-in data types:
+
+ logical:
+
+ A true value is represented by 1, and false value by 0.
+ Comparison operations like <, <=, ==, >, >=, and != now return
+ logical values. Indexing operations that use zero-one style
+ indexing must now use logical values. You can use the new
+ function logical() to convert a numeric value to a logical
+ value. This avoids the need for the built-in variable
+ `prefer_zero_one_indexing', so it has been removed. Logical
+ values are automatically converted to numeric values where
+ appropriate.
+
+ file:
+
+ A file object represents an open Octave stream object. The
+ fopen function now returns a file object instead of an integer.
+ File objects can be converted to integers automatically, and the
+ other functions that work with file ids still work with
+ integers, so this change should be backward compatible.
+
+ The binary left-shift operator `<<' has been defined to work as
+ in C++ for file objects and built-in types. For example,
+
+ my_stream = fopen ("foo", "w");
+ my_stream << "x = " << pi << " marks the spot\n";
+
+ writes `x = 3.1416 marks the spot' in the file foo.
+
+ The built-in variables stdin, stdout, and stderr are now also
+ file objects instead of integers.
+
+ list:
+
+ A list is an array of Octave objects. It can be indexed using
+ the normal indexing operator. For example,
+
+ x = list ([1,2;3,4], 1, "foo");
+ stdout << x(2) << "\n"
+ 1
+ stdout << x;
+ (
+ [1] =
+
+ 1 2
+ 3 4
+
+ [2] = 1
+ [3] = foo
+ )
+
+ There is currently no special syntax for creating lists; you
+ must use the list function.
+
+ * Commas in global statements are no longer special. They are now
+ treated as command separators. This removes a conflict in the
+ grammar and is consistent with the way Matlab behaves. The
+ variable `warn_comma_in_global_decl' has been eliminated.
+
+ * It is now possible to declare static variables that retain their
+ values across function calls. For example,
+
+ function ncall = f () static n = 0; ncall = ++n; endfunction
+
+ defines a function that returns the number of times that it has
+ been called.
+
+ * Within user-defined functions, the new automatic variable `argn'
+ contains the names of the arguments that were passed to the
+ function. For example,
+
+ function f (...)
+ for i = 1:nargin
+ stdout << "argn(" << i << ") = `" << deblank (argn(i,:)) \
+ << "' and its value is " << va_arg () << "\n";
+ endfor
+ endfunction
+ f (1+2, "foo", sin (pi/2))
+
+ prints
+
+ argn(1) = `1 + 2' and its value is 3
+ argn(2) = `"foo"' and its value is foo
+ argn(3) = `sin (pi)' and its value is 1
+
+ on the standard output stream. If nargin is zero, argn is not defined.
+ * Functions like quad, fsolve, and lsode can take either a function
+ name or a simple function body as a string. For example,
+
+ quad ("sqrt (x)", 0, 1)
+
+ is equivalent to
+
+ function y = f (x) y = sqrt (x); endfunction
+ quad ("f", 0, 1)
+
+ * If the argument to eig() is symmetric, Octave uses the specialized
+ Lapack subroutine for symmetric matrices for a significant
+ increase in performance.
+
+ * If the argument to lsode that names the user-supplied function is
+ a 2-element string array, the second element is taken as the name
+ of the Jacobian function. The named function should have the
+ following form:
+
+ JAC = f (X, T)
+
+ where JAC is the Jacobian matrix of partial derivatives of the
+ right-hand-side functions that define the set of differential
+ equations with respect to the state vector X.
+
+ * Global variables are now initialized to the empty matrix, for
+ compatibility with Matlab.
+
+ * Explicit initialization of global variables only happens once.
+ For example, after the following statements are evaluated, g still
+ has the value 1.
+
+ global g = 1
+ global g = 2
+
+ This is useful for initializing global variables that are used to
+ maintain state information that is shared among several functions.
+
+ * Structure elements completion on the command line actually works
+ now.
+
+ * The new built-in variable `fixed_point_format' controls whether
+ Octave uses a scaled fixed-point format for displaying matrices.
+ The default value is 0 unless you use --traditional.
+
+ * The function sumsq now computes sum (x .* conj (x)) for complex values.
+
+ * The new built-in variable max_recursion_depth allows you to
+ prevent Octave from attempting infinite recursion. The default
+ value is 256.
+
+ * Octave now uses kpathsea 3.2.
+
+ * New configure option, --enable-readline.
+
+ * New configure option, --enable-static.
+
+Summary of changes for version 2.0.7 (1997-06-04):
+-------------------------------------------------
+
+ This is a bug-fixing release. There are no new user-visible features.
+
+Summary of changes for version 2.0.6 (1997-05-27):
+-------------------------------------------------
+
+ This is primarily a bug-fixing release. There are only a few new
+ user-visible features.
+
+ * The new built-in variable default_eval_print_flag controls whether
+ Octave prints the results of commands executed by eval() that do
+ not end with semicolons. The default is 1.
+
+ * The new built-in constant OCTAVE_HOME specifies the top-level
+ directory where Octave is installed.
+
+ * Octave no longer includes functions to work with NPSOL or QPSOL,
+ because they are not free software.
+
+ * The new built-in variable called kluge_procbuf_delay specifies the
+ number of microseconds to delay in the parent process after
+ forking. By default on gnu-win32 systems, it's set to 500000 (1/2
+ second). On other systems, the default value is 0. Delaying for
+ a short time in the parent after forking seems to avoid problems
+ in which communicating with subprocesses via pipes would sometimes
+ cause Octave to hang. I doubt that the delay is really the right
+ solution. If anyone has a better idea, I'd love to hear it.
+
+Summary of changes for version 2.0.5 (1997-03-01):
+-------------------------------------------------
+
+ * A `switch' statement is now available. See the Statements chapter
+ in the manual for details.
+
+ * Commands like ls, save, and cd may now also be used as formal
+ parameters for functions.
+
+ * More tests.
+
+Summary of changes for version 2.0.4 (1997-02-20):
+-------------------------------------------------
+
+ * It is now possible to use commands like ls, save, and cd as simple
+ variable names. They still cannot be used as formal parameters
+ for functions, or as the names of structure variables. Failed
+ assignments leave them undefined (you can recover the original
+ function definition using clear).
+
+ * Is is now possible to invoke commands like ls, save, and cd as
+ normal functions (for example, load ("foo", "x", "y", "z")).
+
+Summary of changes for version 2.0.3 (1997-02-18):
+-------------------------------------------------
+
+ * The manual has been completely revised and now corresponds much
+ more closely to the features of the current version.
+
+ * The return value for assignment expressions is now the RHS since
+ that is more consistent with the way other programming languages
+ work. However, Octave still prints the entire LHS value so that
+
+ x = zeros (1, 2);
+ x(2) = 1
+
+ still prints
+
+ x =
+
+ 0 1
+
+ but an assignment like
+
+ z = x(2) = 1
+
+ sets z to 1 (not [ 0, 1 ] as in previous versions of Octave).
+
+ * It is now much easier to make binary distributions. See the
+ Binary Distributions section of the manual for more details.
+
+Summary of changes for version 2.0.2 (1997-01-27):
+-------------------------------------------------
+
+ * Octave now stops executing commands from a script file if an error
+ is encountered.
+
+ * The return, and break commands now cause Octave to quit executing
+ commands from script files. When used in invalid contexts, the
+ break, continue, and return commands are now simply ignored
+ instead of producing parse errors.
+
+ * size ("") is now [0, 0].
+
+ * New functions:
+
+ sleep -- pause execution for a specified number of seconds
+ usleep -- pause execution for a specified number of microseconds
+
+Summary of changes for version 2.0 (1996-12-10):
+-----------------------------------------------
+
+ * The set and show commands for setting and displaying gnuplot
+ parameters have been replaced by gset and gshow. This change will
+ probably break lots of things, but it is necessary to allow for
+ compatibility with the Matlab graphics and GUI commands in a
+ future version of Octave. (For now, the old set and show commands
+ do work, but they print an annoying warning message to try to get
+ people to switch to using gset.)
+
+ * Octave has been mostly ported to Windows NT and Windows 95 using
+ the beta 17 release of the Cygnus GNU-WIN32 tools. Not everything
+ works, but it is usable. See the file README.WINDOWS for more
+ information.
+
+ * Dynamic linking works on more systems using dlopen() and friends
+ (most modern Unix systems) or shl_load() and friends (HP/UX
+ systems). A simple example is provided in examples/hello.cc.
+ For this feature to work, you must configure Octave with
+ --enable-shared. You may also need to have a shared-library
+ version of libg++ and libstdc++.
+
+ * New data types can be added to Octave by writing a C++ class. On
+ systems that support dynamic linking, new data types can be added
+ to an already running Octave binary. A simple example appears in
+ the file examples/make_int.cc. Other examples are the standard
+ Octave data types defined in the files src/ov*.{h,cc} and
+ src/op-*.cc.
+
+ * The configure option --enable-bounds-check turns on bounds
+ checking on element references for Octave's internal array and
+ matrix classes. It's enabled by default. To disable this
+ feature, configure Octave with --disable-bounds-check.
+
+ * The C-style I/O functions (fopen, fprintf, etc.) have been
+ rewritten to be more compatible with Matlab. The fputs function
+ has also been added. Usage of the *printf functions that was
+ allowed in previous versions of Octave should still work.
+ However, there is no way to make the new versions of the *scanf
+ functions compatible with Matlab *and* previous versions of
+ Octave. An optional argument to the *scanf functions is now
+ available to make them behave in a way that is compatible with
+ previous versions of Octave.
+
+ * Octave can now read files that contain columns of numbers only,
+ with no header information. The name of the loaded variable is
+ constructed from the file name. Each line in the file must have
+ the same number of elements.
+
+ * The interface to the pager has changed. The new built-in variable
+ `page_output_immediately' controls when Octave sends output to the
+ pager. If it is nonzero, Octave sends output to the pager as soon
+ as it is available. Otherwise, Octave buffers its output and
+ waits until just before the prompt is printed to flush it to the
+ pager.
+
+ * Expressions of the form
+
+ A(i,j) = x
+
+ where X is a scalar and the indices i and j define a matrix of
+ elements now work as you would expect rather than giving an error.
+ I am told that this is how Matlab 5.0 will behave when it is
+ released.
+
+ * Indexing of character strings now works.
+
+ * The echo command has been implemented.
+
+ * The document command is now a regular function.
+
+ * New method for handling errors:
+
+ try
+ BODY
+ catch
+ CLEANUP
+ end_try_catch
+
+ Where BODY and CLEANUP are both optional and may contain any
+ Octave expressions or commands. The statements in CLEANUP are
+ only executed if an error occurs in BODY.
+
+ No warnings or error messages are printed while BODY is
+ executing. If an error does occur during the execution of BODY,
+ CLEANUP can access the text of the message that would have been
+ printed in the builtin constant __error_text__. This is the same
+ as eval (TRY, CATCH) (which may now also use __error_text__) but
+ it is more efficient since the commands do not need to be parsed
+ each time the TRY and CATCH statements are evaluated.
+
+ * Octave no longer parses the help command by grabbing everything
+ after the keyword `help' until a newline character is read. To
+ get help for `;' or `,', now, you need to use the command
+ `help semicolon' or `help comma'.
+
+ * Octave's parser now does some simple constant folding. This means
+ that expressions like 3*i are now evaluated only once, when a
+ function is compiled, and the right hand side of expressions like
+ a = [1,2;3,4] are treated as true matrix constants rather than
+ lists of elements which must be evaluated each time they are
+ needed.
+
+ * Built-in variables that can take values of "true" and "false" can
+ now also be set to any nonzero scalar value to indicate "true",
+ and 0 to indicate "false".
+
+ * New built-in variables `history_file', `history_size', and
+ `saving_history'.
+
+ * New built-in variable `string_fill_char' specifies the character
+ to fill with when creating arrays of strings.
+
+ * If the new built-in variable `gnuplot_has_frames' is nonzero,
+ Octave assumes that your copy of gnuplot includes support for
+ multiple plot windows when using X11.
+
+ If the new built-in variable `gnuplot_has_multiplot' is nonzero,
+ Octave assumes that your copy of gnuplot has the multiplot support
+ that is included in recent 3.6beta releases.
+
+ The initial values of these variables are determined by configure,
+ but can be changed in your startup script or at the command line
+ in case configure got it wrong, or if you upgrade your gnuplot
+ installation.
+
+ * The new plot function `figure' allows multiple plot windows when
+ using newer versions of gnuplot with X11.
+
+ * Octave now notices when the plotter has exited unexpectedly.
+
+ * New built-in variable `warn_missing_semicolon'. If nonzero, Octave
+ will warn when statements in function definitions don't end in
+ semicolons. The default value is 0.
+
+ * Octave now attempts to continue after floating point exceptions
+ or out-of-memory errors.
+
+ * If Octave crashes, it now attempts to save all user-defined
+ variables in a file named `octave-core' in the current directory
+ before exiting.
+
+ * It is now possible to get the values of individual option settings
+ for the dassl, fsolve, lsode, npsol, qpsol, and quad functions
+ using commands like
+
+ dassl_reltol = dassl_options ("relative tolerance");
+
+ * The svd() function no longer computes the left and right singular
+ matrices unnecessarily. This can significantly improve
+ performance for large matrices if you are just looking for the
+ singular values.
+
+ * The filter() function is now a built-in function.
+
+ * New function randn() returns a pseudo-random number from a normal
+ distribution. The rand() and randn() functions have separate
+ seeds and generators.
+
+ * Octave's command-line arguments are now available in the built-in
+ variable `argv'. The program name is also available in the
+ variables `program_invocation_name' and `program_name'. If
+ executing a script from the command line (e.g., octave foo.m) or
+ using the `#! /bin/octave' hack, the program name is set to the
+ name of the script.
+
+ * New built-in variable `completion_append_char' used as the
+ character to append to successful command-line completion
+ attempts. The default is " " (a single space).
+
+ * Octave now uses a modified copy of the readline library from
+ version 1.14.5 of GNU bash.
+
+ * In prompt strings, `\H' expands to the whole host name.
+
+ * New built-in variable `beep_on_error'. If nonzero, Octave will try
+ to ring your terminal's bell before printing an error message.
+ The default value is 0.
+
+ * For functions defined from files, the type command now prints the
+ text of the file. You can still get the text reconstructed from
+ the parse tree by using the new option -t (-transformed).
+
+ * New command-line argument --traditional sets the following
+ preference variables for compatibility with Matlab:
+
+ PS1 = ">> "
+ PS2 = ""
+ beep_on_error = 1
+ default_save_format = "mat-binary"
+ define_all_return_values = 1
+ do_fortran_indexing = 1
+ empty_list_elements_ok = 1
+ implicit_str_to_num_ok = 1
+ ok_to_lose_imaginary_part = 1
+ page_screen_output = 0
+ prefer_column_vectors = 0
+ prefer_zero_one_indexing = 1
+ print_empty_dimensions = 0
+ treat_neg_dim_as_zero = 1
+ warn_function_name_clash = 0
+ whitespace_in_literal_matrix = "traditional"
+
+ * New functions:
+
+ readdir -- returns names of files in directory as array of strings
+ mkdir -- create a directory
+ rmdir -- remove a directory
+ rename -- rename a file
+ unlink -- delete a file
+ umask -- set permission mask for file creation
+ stat -- get information about a file
+ lstat -- get information about a symbolic link
+ glob -- perform filename globbing
+ fnmatch -- match strings with filename globbing patterns
+ more -- turn the pager on or off
+ gammaln -- alias for lgamma
+
+ * New audio functions from Andreas Weingessel
+ .
+
+ lin2mu -- linear to mu-law encoding
+ loadaudio -- load an audio file to a vector
+ mu2lin -- mu-law to linear encoding
+ playaudio -- play an audio file
+ record -- record sound and store in vector
+ saveaudio -- save a vector as an audio file
+ setaudio -- executes mixer shell command
+
+ * New plotting functions from Vinayak Dutt. Ones dealing with
+ multiple plots on one page require features from gnuplot 3.6beta
+ (or later).
+
+ bottom_title -- put title at the bottom of the plot
+ mplot -- multiplot version of plot
+ multiplot -- switch multiple-plot mode on or off
+ oneplot -- return to one plot per page
+ plot_border -- put a border around plots
+ subplot -- position multiple plots on a single page
+ subwindow -- set subwindow position for next plot
+ top_title -- put title at the top of the plot
+ zlabel -- put a label on the z-axis
+
+ * New string functions
+
+ bin2dec -- convert a string of ones and zeros to an integer
+ blanks -- create a string of blanks
+ deblank -- delete trailing blanks
+ dec2bin -- convert an integer to a string of ones and zeros
+ dec2hex -- convert an integer to a hexadecimal string
+ findstr -- locate occurrences of one string in another
+ hex2dec -- convert a hexadecimal string to an integer
+ index -- return position of first occurrence a string in another
+ rindex -- return position of last occurrence a string in another
+ split -- divide one string into pieces separated by another
+ str2mat -- create a string matrix from a list of strings
+ strrep -- replace substrings in a string
+ substr -- extract a substring
+
+ The following functions return a matrix of ones and zeros.
+ Elements that are nonzero indicate that the condition was true for
+ the corresponding character in the string array.
+
+ isalnum -- letter or a digit
+ isalpha -- letter
+ isascii -- ascii
+ iscntrl -- control character
+ isdigit -- digit
+ isgraph -- printable (but not space character)
+ islower -- lower case
+ isprint -- printable (including space character)
+ ispunct -- punctuation
+ isspace -- whitespace
+ isupper -- upper case
+ isxdigit -- hexadecimal digit
+
+ These functions return new strings.
+
+ tolower -- convert to lower case
+ toupper -- convert to upper case
+
+ * New function, fgetl. Both fgetl and fgets accept an optional
+ second argument that specifies a maximum number of characters to
+ read, and the function fgets is now compatible with Matlab.
+
+ * Printing in hexadecimal format now works (format hex). It is also
+ possible to print the internal bit representation of a value
+ (format bit). Note that these formats are only implemented for
+ numeric values.
+
+ * Additional structure features:
+
+ -- Name completion now works for structures.
+
+ -- Values and names of structure elements are now printed by
+ default. The new built-in variable `struct_levels_to_print'
+ controls the depth of nested structures to print. The default
+ value is 2.
+
+ -- New functions:
+
+ struct_contains (S, NAME) -- returns 1 if S is a structure with
+ element NAME; otherwise returns 0.
+
+ struct_elements (S) -- returns the names of all elements
+ of structure S in an array of strings.
+
+ * New io/subprocess functions:
+
+ fputs -- write a string to a file with no formatting
+ popen2 -- start a subprocess with 2-way communication
+ mkfifo -- create a FIFO special file
+ popen -- open a pipe to a subprocess
+ pclose -- close a pipe from a subprocess
+ waitpid -- check the status of or wait for subprocesses
+
+ * New time functions:
+
+ asctime -- format time structure according to local format
+ ctime -- equivalent to `asctime (localtime (TMSTRUCT))'
+ gmtime -- return time structure corresponding to UTC
+ localtime -- return time structure corresponding to local time zone
+ strftime -- print given time structure using specified format
+ time -- return current time
+
+ The `clock' and `date' functions are now implemented in M-files
+ using these basic functions.
+
+ * Access to additional Unix system calls:
+
+ dup2 -- duplicate a file descriptor
+ exec -- replace current process with a new process
+ fcntl -- control open file descriptors
+ fork -- create a copy of the current process
+ getpgrp -- return the process group id of the current process
+ getpid -- return the process id of the current process
+ getppid -- return the process id of the parent process
+ getuid -- return the real user id of the current process
+ getgid -- return the real group id of the current process
+ geteuid -- return the effective user id of the current process
+ getegid -- return the effective group id of the current process
+ pipe -- create an interprocess channel
+
+ * Other new functions:
+
+ commutation_matrix -- compute special matrix form
+ duplication_matrix -- compute special matrix form
+ common_size.m -- bring arguments to a common size
+ completion_matches -- perform command completion on string
+ tilde_expand -- perform tilde expansion on string
+
+ meshgrid -- compatible with Matlab's meshgrid function
+ tmpnam -- replaces octave_tmp_file_name
+ atexit -- register functions to be called when Octave exits
+ putenv -- define an environment variable
+ bincoeff -- compute binomial coefficients
+ nextpow2 -- compute the next power of 2 greater than a number
+ detrend -- remove a best fit polynomial from data
+ erfinv -- inverse error function
+ shift -- perform a circular shift on the elements of a matrix
+ pow2 -- compute 2 .^ x
+ log2 -- compute base 2 logarithms
+ diff -- compute differences of matrix elements
+ vech -- stack columns of a matrix below the diagonal
+ vec -- stack columns of a matrix to form a vector
+ xor -- compute exclusive or
+
+ * Functions for getting info from the password database on Unix systems:
+
+ getpwent -- read entry from password-file stream, opening if necessary
+ getpwuid -- search for password entry with matching user ID
+ getpwnam -- search for password entry with matching username
+ setpwent -- rewind the password-file stream
+ endpwent -- close the password-file stream
+
+ * Functions for getting info from the group database on Unix systems:
+
+ getgrent -- read entry from group-file stream, opening if necessary
+ getgrgid -- search for group entry with matching group ID
+ getgrnam -- search for group entry with matching group name
+ setgrent -- rewind the group-file stream
+ endgrent -- close the group-file stream
+
+ * The New function octave_config_info returns a structure containing
+ information about how Octave was configured and compiled.
+
+ * New function getrusage returns a structure containing system
+ resource usage statistics. The `cputime' function is now defined
+ in an M-file using getrusage.
+
+ * The info reader is now a separate binary that runs as a
+ subprocess. You still need the info reader distributed with
+ Octave though, because there are some new command-line arguments
+ that are not yet available in the public release of Info.
+
+ * There is a new built-in variable, INFO_PROGRAM, which is used as
+ the name of the info program to run. Its initial value is
+ $OCTAVE_HOME/lib/octave/VERSION/exec/ARCH/info, but that value can
+ be overridden by the environment variable OCTAVE_INFO_PROGRAM, or
+ the command line argument --info-program NAME, or by setting the
+ value of INFO_PROGRAM in a startup script.
+
+ * There is a new built-in variable, EXEC_PATH, which is used as
+ the list of directories to search when executing subprograms. Its
+ initial value is taken from the environment variable
+ OCTAVE_EXEC_PATH (if it exists) or PATH, but that value can be
+ overridden by the command line argument --exec-path PATH, or
+ by setting the value of EXEC_PATH in a startup script. If the
+ EXEC_PATH begins (ends) with a colon, the directories
+ $OCTAVE_HOME/lib/octave/VERSION/exec/ARCH and $OCTAVE_HOME/bin are
+ prepended (appended) to EXEC_PATH (if you don't specify a value
+ for EXEC_PATH explicitly, these special directories are prepended
+ to your PATH).
+
+ * If it is present, Octave will now use an `ls-R' database file to
+ speed up recursive path searching. Octave looks for a file called
+ ls-R in the directory specified by the environment variable
+ OCTAVE_DB_DIR. If that is not set but the environment variable
+ OCTAVE_HOME is set, Octave looks in $OCTAVE_HOME/lib/octave.
+ Otherwise, Octave looks in the directory $datadir/octave (normally
+ /usr/local/lib/octave).
+
+ * New examples directory.
+
+ * There is a new script, mkoctfile, that can be used to create .oct
+ files suitable for dynamic linking.
+
+ * Many more bug fixes.
+
+ * ChangeLogs are now kept in each subdirectory.
+
+See NEWS.1 for old news.
diff -r 7ecd07721cca -r 86ddba86efbe etc/NEWS.3
--- a/etc/NEWS.3 Tue Dec 07 16:20:15 2021 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1721 +0,0 @@
-Summary of important user-visible changes for version 3.8 (2013-12-27):
-----------------------------------------------------------------------
-
- ** One of the biggest new features for Octave 3.8 is a graphical user
- interface. It is the one thing that users have requested most
- often over the last few years and now it is almost ready. But
- because it is not quite as polished as we would like, we have
- decided to wait until the 4.0.x release series before making the
- GUI the default interface (until then, you can use the --force-gui
- option to start the GUI).
-
- Given the length of time and the number of bug fixes and
- improvements since the last major release Octave, we also decided
- against delaying the release of all these new improvements any
- longer just to perfect the GUI. So please enjoy the 3.8 release of
- Octave and the preview of the new GUI. We believe it is working
- reasonably well, but we also know that there are some obvious rough
- spots and many things that could be improved.
-
- WE NEED YOUR HELP. There are many ways that you can help us fix
- the remaining problems, complete the GUI, and improve the overall
- user experience for both novices and experts alike:
-
- * If you are a skilled software developer, you can help by
- contributing your time to help with Octave's development. See
- http://octave.org/get-involved.html for more information.
-
- * If Octave does not work properly, you are encouraged
- report the problems you find. See http://octave.org/bugs.html
- for more information about how to report problems.
-
- * Whether you are a user or developer, you can help to fund the
- project. Octave development takes a lot of time and expertise.
- Your contributions help to ensure that Octave will continue to
- improve. See http://octave.org/donate.html for more details.
-
- We hope you find Octave to be useful. Please help us make it even
- better for the future!
-
- ** Octave now uses OpenGL graphics by default with FLTK widgets. If
- OpenGL libraries or FLTK widgets are not available when Octave is
- built, gnuplot is used. You may also choose to use gnuplot for
- graphics by executing the command
-
- graphics_toolkit ("gnuplot")
-
- Adding this command to your ~/.octaverc file will set the default
- for each session.
-
- ** Printing or saving figures with OpenGL graphics requires the
- gl2ps library which is no longer distributed with Octave. The
- software is widely available in most package managers. If a
- pre-compiled package does not exist for your system, you can find
- the current sources at http://www.geuz.org/gl2ps/.
-
- ** Octave now supports nested functions with scoping rules that are
- compatible with Matlab. A nested function is one declared and defined
- within the body of another function. The nested function is only
- accessible from within the enclosing function which makes it one
- method for making private functions whose names do not conflict with those
- in the global namespace (See also subfunctions and private functions).
- In addition, variables in the enclosing function are visible within the
- nested function. This makes it possible to have a pseudo-global variable
- which can be seen by a group of functions, but which is not visible in
- the global namespace.
-
- Example:
- function outerfunc (...)
- ...
- function nested1 (...)
- ...
- function nested2 (...)
- ...
- endfunction
- endfunction
-
- function nested3 (...)
- ...
- endfunction
- endfunction
-
- ** Line continuations inside character strings have changed.
-
- The sequence '...' is no longer recognized as a line continuation
- inside a character string. A backslash '\' followed by a newline
- character is no longer recognized as a line continuation inside
- single-quoted character strings. Inside double-quoted character
- strings, a backslash followed by a newline character is still
- recognized as a line continuation, but the backslash character must
- be followed *immediately* by the newline character. No whitespace or
- end-of-line comment may appear between them.
-
- ** Backslash as a continuation marker outside of double-quoted strings
- is now deprecated.
-
- Using '\' as a continuation marker outside of double quoted strings
- is now deprecated and will be removed from a future version of
- Octave. When that is done, the behavior of
-
- (a \
- b)
-
- will be consistent with other binary operators.
-
- ** Redundant terminal comma accepted by parser
-
- A redundant terminal comma is now accepted in matrix
- definitions which allows writing code such as
-
- [a,...
- b,...
- c,...
- ] = deal (1,2,3)
-
- ** Octave now has limited support for named exceptions
-
- The following syntax is now accepted:
-
- try
- statements
- catch exception-id
- statements
- end
-
- The exception-id is a structure with the fields "message" and
- "identifier". For example
-
- try
- error ("Octave:error-id", "error message");
- catch myerr
- printf ("identifier: %s\n", myerr.identifier);
- printf ("message: %s\n", myerr.message);
- end_try_catch
-
- When classdef-style classes are added to Octave, the exception-id
- will become an MException object.
-
- ** Warning states may now be set temporarily, until the end of the
- current function, using the syntax
-
- warning STATE ID "local"
-
- in which STATE may be "on", "off", or "error". Changes to warning
- states that are set locally affect the current function and all
- functions called from the current scope. The previous warning state
- is restored on return from the current function. The "local"
- option is ignored if used in the top-level workspace.
-
- ** Warning IDs renamed:
-
- Octave:array-as-scalar => Octave:array-to-scalar
- Octave:array-as-vector => Octave:array-to-vector
-
- ** 'emptymatch', 'noemptymatch' options added to regular expressions.
-
- With this addition Octave now accepts the entire set of Matlab options
- for regular expressions. 'noemptymatch' is the default, but 'emptymatch'
- has certain uses where you need to match an assertion rather than actual
- characters. For example,
-
- regexprep ('World', '^', 'Hello ', 'emptymatch')
- => Hello World
-
- where the pattern is actually the assertion '^' or start-of-line.
-
- ** For compatibility with Matlab, the regexp, regexpi, and regexprep
- functions now process backslash escape sequences in single-quoted pattern
- strings. In addition, the regexprep function now processes backslash
- escapes in single-quoted replacement strings. For example,
-
- regexprep (str, '\t', '\n')
-
- would search the variable str for a TAB character (escape sequence \t)
- and replace it with a NEWLINE (escape sequence \n). Previously the
- expression would have searched for a literal '\' followed by 't' and
- replaced the two characters with the sequence '\', 'n'.
-
- ** A TeX parser has been implemented for the FLTK toolkit and is the default
- for any text object including titles and axis labels. The TeX parser is
- supported only for display on a monitor, not for printing.
-
- A quick summary of features:
-
- Code Feature Example Comment
- -----------------------------------------------------------------
- _ subscript H_2O formula for water
- ^ exponent y=x^2 formula for parabola
- \char symbol \beta Greek symbol beta
- \fontname font \fontname{Arial} set Arial font
- \fontsize fontsize \fontsize{16} set fontsize 16
- \color[rgb] fontcolor \color[rgb]{1 0 1} set magenta color
- \bf bold \bfBold Text bold font
- \it italic \itItalic Text italic font
- \sl slanted \slOblique Text slanted font
- \rm normal \bfBold\rmNormal normal font
- {} group {\bf Bold}Normal group objects
- e^{i*\pi} = -1 group objects
-
- ** The m-files in the plot directory have been overhauled.
-
- The plot functions now produce output that is nearly visually compatible
- with Matlab. Plot performance has also increased, dramatically for some
- functions such as comet and waitbar. Finally, the documentation for most
- functions has been updated so it should be clearer both how to use a
- function and when a function is appropriate.
-
- ** The m-files in the image directory have been overhauled.
-
- The principal benefit is that Octave will now no longer automatically
- convert images stored with integers to doubles. Storing images as uint8
- or uint16 requires only 1/8 or 1/4 the memory of an image stored using
- doubles. For certain operations, such as fft2, the image must still be
- converted to double in order to work.
-
- Other changes include fixes to the way indexed images are read from a
- colormap depending on the image class (integer images have a -1 offset to
- the colormap row number).
-
- ** The imread and imwrite functions have been completely rewritten.
-
- The main changes relate to the alpha channel, support for reading and
- writing of floating point images, implemented writing of indexed images,
- and appending images to multipage image files.
-
- The issues that may arise due to backwards incompatibility are:
-
- * imwrite no longer interprets a length of 2 or 4 in the third dimension
- as grayscale or RGB with alpha channel (a length of 4 will be saved
- as a CMYK image). Alpha channel must be passed as separate argument.
-
- * imread will always return the colormap indexes when reading an indexed
- image, even if the colormap is not requested as output.
-
- * transparency values are now inverted from previous Octave versions
- (0 is for completely transparent instead of completely opaque).
-
- In addition, the function imformats has been implemented to expand
- reading and writing of images of different formats through imread
- and imwrite.
-
- ** The colormap function now provides new options--"list", "register",
- and "unregister"--to list all available colormap functions, and to
- add or remove a function name from the list of known colormap
- functions. Packages that implement extra colormaps should use these
- commands with PKG_ADD and PKG_DEL statements.
-
- ** strsplit has been modified to be compatible with Matlab. There
- are two instances where backward compatibility is broken.
-
- (1) Delimiters are now string vectors, not scalars.
-
- Octave's legacy behavior
-
- strsplit ("1 2, 3", ", ")
- ans =
- {
- [1,1] = 1
- [1,2] = 2
- [1,3] =
- [1,4] = 3
- }
-
- Matlab compatible behavior
-
- strsplit ("1 2, 3", ", ")
- ans =
- {
- [1,1] = 1 2
- [1,2] = 3
- }
-
- (2) By default, Matlab treats consecutive delimiters as a single
- delimiter. By default, Octave's legacy behavior was to return an
- empty string for the part between the delmiters.
-
- Where legacy behavior is desired, the call to strsplit() may be
- replaced by ostrsplit(), which is Octave's original implementation of
- strsplit().
-
- ** The datevec function has been extended for better Matlab compatibility.
- It now accepts string inputs in the following numerical formats: 12, 21,
- 22, 26, 29, 31. This is undocumented, but verifiable, Matlab behavior.
- In addition, the default for formats which do not specify a date is
- January 1st of the current year. The previous default was the current day,
- month, and year. This may produce changes in existing scripts.
-
- ** The error function and its derivatives has been extended to accept complex
- arguments. The following functions now accept complex inputs:
-
- erf erfc erfcx
-
- In addition two new error functions erfi (imaginary error function) and
- dawson (scaled imaginary error function) have been added.
-
- ** The glpk function has been modified to reflect changes in the GLPK
- library. The "round" and "itcnt" options have been removed. The
- "relax" option has been replaced by the "rtest" option. The numeric
- values of error codes and of some options have also changed.
-
- ** The kurtosis function has changed definition to be compatible with
- Matlab. It now returns the base kurtosis instead of the "excess kurtosis".
- The old behavior can be had by changing scripts to normalize with -3.
-
- "excess kurtosis" = kurtosis (x) - 3
-
- ** The moment function has changed definition to be compatible with
- Matlab. It now returns the central moment instead of the raw moment.
- The old behavior can be had by passing the type argument "r" for raw.
-
- ** The default name of the Octave crash dump file is now
- "octave-workspace" instead of "octave-core". The exact name can
- always be customized with the octave_core_file_name function.
-
- ** A citation command has been added to display information on how to
- cite Octave and packages in publications. The package system will
- look for and install CITATION files from packages.
-
- ** The java package from Octave Forge is now part of core Octave. The
- following new functions are available for interacting with Java
- directly from Octave:
-
- debug_java java_matrix_autoconversion
- isjava java_unsigned_autoconversion
- java2mat javaaddpath
- javaArray javaclasspath
- javaMethod javamem
- javaObject javarmpath
- usejava
-
- In addition, the following functions that use the Java interface
- are now available (provided that Octave is compiled with support for
- Java enabled):
-
- helpdlg listdlg questdlg
- inputdlg msgbox warndlg
-
- ** Other new functions added in 3.8.0:
-
- atan2d erfi lines
- base64_decode expint linsolve
- base64_encode findfigs missing_component_hook
- betaincinv flintmax polyeig
- built_in_docstrings_file fminsearch prefdir
- cmpermute gallery preferences
- cmunique gco readline_re_read_init_file
- colorcube hdl2struct readline_read_init_file
- copyobj history_save rgbplot
- dawson imformats save_default_options
- dblist importdata shrinkfaces
- desktop isaxes splinefit
- doc_cache_create iscolormap stemleaf
- ellipj isequaln strjoin
- ellipke jit_debug struct2hdl
- erfcinv jit_enable tetramesh
- jit_startcnt waterfall
-
- ** Deprecated functions.
-
- The following functions were deprecated in Octave 3.4 and have been
- removed from Octave 3.8.
-
- autocor dispatch is_global setstr
- autocov fstat krylovb strerror
- betai gammai perror values
- cellidx glpkmex replot
- cquad is_duplicate_entry saveimage
-
- The following functions have been deprecated in Octave 3.8 and will
- be removed from Octave 3.12 (or whatever version is the second major
- release after 3.8):
-
- default_save_options java_new
- gen_doc_cache java_set
- interp1q java_unsigned_conversion
- isequalwithequalnans javafields
- java_convert_matrix javamethods
- java_debug re_read_readline_init_file
- java_get read_readline_init_file
- java_invoke saving_history
-
-
- The following keywords have been deprecated in Octave 3.8 and will
- be removed from Octave 3.12 (or whatever version is the second major
- release after 3.8):
-
- static
-
- The following configuration variables have been deprecated in Octave
- 3.8 and will be removed from Octave 3.12 (or whatever version is the
- second major release after 3.8):
-
- CC_VERSION (now GCC_VERSION)
- CXX_VERSION (now GXX_VERSION)
-
- The internal class has been deprecated in Octave 3.8 and will
- be removed from Octave 3.12 (or whatever version is the second major
- release after 3.8). Replacement classes are (struct array)
- or for a single structure.
-
-Summary of important user-visible changes for version 3.6 (2012-01-15):
-----------------------------------------------------------------------
-
- ** The PCRE library is now required to build Octave. If a pre-compiled
- package does not exist for your system, you can find PCRE sources
- at http://www.pcre.org
-
- ** The ARPACK library is no longer distributed with Octave.
- If you need the eigs or svds functions you must provide an
- external ARPACK through a package manager or by compiling it
- yourself. If a pre-compiled package does not exist for your system,
- you can find the current ARPACK sources at
- http://forge.scilab.org/index.php/p/arpack-ng
-
- ** Many of Octave's binary operators (.*, .^, +, -, ...) now perform
- automatic broadcasting for array operations which allows you to use
- operator notation instead of calling bsxfun or expanding arrays (and
- unnecessarily wasting memory) with repmat or similar idioms. For
- example, to scale the columns of a matrix by the elements of a row
- vector, you may now write
-
- rv .* M
-
- In this expression, the number of elements of rv must match the
- number of columns of M. The following operators are affected:
-
- plus + .+
- minus - .-
- times .*
- rdivide ./
- ldivide .\
- power .^ .**
- lt <
- le <=
- eq ==
- gt >
- ge >=
- ne != ~=
- and &
- or |
- atan2
- hypot
- max
- min
- mod
- rem
- xor
-
- additionally, since the A op= B assignment operators are equivalent
- to A = A op B, the following operators are also affected:
-
- += -= .+= .-= .*= ./= .\= .^= .**= &= |=
-
- See the "Broadcasting" section in the new "Vectorization and Faster
- Code Execution" chapter of the manual for more details.
-
- ** Octave now features a profiler, thanks to the work of Daniel Kraft
- under the Google Summer of Code mentorship program. The manual has
- been updated to reflect this addition. The new user-visible
- functions are profile, profshow, and profexplore.
-
- ** Overhaul of statistical distribution functions
-
- Functions now return "single" outputs for inputs of class "single".
-
- 75% reduction in memory usage through use of logical indexing.
-
- Random sample functions now use the same syntax as rand and accept
- a comma separated list of dimensions or a dimension vector.
-
- Functions have been made Matlab-compatible with regard to special
- cases (probability on boundaries, probabilities for values outside
- distribution, etc.). This may cause subtle changes to existing
- scripts.
-
- negative binomial function has been extended to real, non-integer
- inputs. The discrete_inv function now returns v(1) for 0 instead of
- NaN. The nbincdf function has been recoded to use a closed form
- solution with betainc.
-
- ** strread, textscan, and textread have been completely revamped.
-
- They now support nearly all Matlab functionality including:
-
- * Matlab-compatible whitespace and delimiter defaults
-
- * Matlab-compatible options: 'whitespace', treatasempty', format
- string repeat count, user-specified comment style, uneven-length
- output arrays, %n and %u conversion specifiers (provisionally)
-
- ** All .m string functions have been modified for better performance or
- greater Matlab compatibility. Performance gains of 15X-30X have
- been demonstrated. Operations on cell array of strings no longer pay
- quite as high a penalty as those on 2-D character arrays.
-
- deblank: Now requires character or cellstr input.
-
- strtrim: Now requires character or cellstr input.
- No longer trims nulls ("\0") from string for Matlab
- compatibility.
-
- strmatch: Follows documentation precisely and ignores trailing spaces
- in pattern and in string. Note that this is documented
- Matlab behavior but the implementation apparently does
- not always follow it.
-
- substr: Now possible to specify a negative LEN option which
- extracts to within LEN of the end of the string.
-
- strtok: Now accepts cellstr input.
-
- base2dec, bin2dec, hex2dec:
- Now accept cellstr inputs.
-
- dec2base, dec2bin, dec2hex:
- Now accept cellstr inputs.
-
- index, rindex:
- Now accept 2-D character array input.
-
- strsplit: Now accepts 2-D character array input.
-
- ** Geometry functions derived from Qhull (convhull, delaunay, voronoi)
- have been revamped. The options passed to the underlying qhull
- command have been changed for better results or for Matlab
- compatibility.
-
- convhull: Default options are "Qt" for 2D, 3D, 4D inputs
- Default options are "Qt Qx" for 5D and higher
-
- delaunay: Default options are "Qt Qbb Qc Qz" for 2D and 3D inputs
- Default options are "Qt Qbb Qc Qx" for 4D and higher
-
- voronoi: No default arguments
-
- ** Date/Time functions updated. Millisecond support with FFF format
- string now supported.
-
- datestr: Numerical formats 21, 22, 29 changed to match Matlab.
- Now accepts cellstr input.
-
- ** The following warning IDs have been removed:
-
- Octave:associativity-change
- Octave:complex-cmp-ops
- Octave:empty-list-elements
- Octave:fortran-indexing
- Octave:precedence-change
-
- ** The warning ID Octave:string-concat has been renamed to
- Octave:mixed-string-concat.
-
- ** Octave now includes the following Matlab-compatible preference
- functions:
-
- addpref getpref ispref rmpref setpref
-
- ** The following Matlab-compatible handle graphics functions have been
- added:
-
- guidata uipanel uitoolbar
- guihandles uipushtool uiwait
- uicontextmenu uiresume waitfor
- uicontrol uitoggletool
-
- The uiXXX functions above are experimental.
-
- Except for uiwait and uiresume, the uiXXX functions are not
- supported with the FLTK+OpenGL graphics toolkit.
-
- The gnuplot graphics toolkit does not support any of the uiXXX
- functions nor the waitfor function.
-
- ** New keyword parfor (parallel for loop) is now recognized as a valid
- keyword. Implementation, however, is still mapped to an ordinary
- for loop.
-
- ** Other new functions added in 3.6.0:
-
- bicg nthargout usejava
- is_dq_string narginchk waitbar
- is_sq_string python zscore
- is_function_handle register_graphics_toolkit
- loaded_graphics_toolkits recycle
-
- ** Deprecated functions.
-
- The following functions were deprecated in Octave 3.2 and have been
- removed from Octave 3.6.
-
- create_set spcholinv splu
- dmult spcumprod spmax
- iscommand spcumsum spmin
- israwcommand spdet spprod
- lchol spdiag spqr
- loadimage spfind spsum
- mark_as_command sphcat spsumsq
- mark_as_rawcommand spinv spvcat
- spatan2 spkron str2mat
- spchol splchol unmark_command
- spchol2inv split unmark_rawcommand
-
- The following functions have been deprecated in Octave 3.6 and will
- be removed from Octave 3.10 (or whatever version is the second major
- release after 3.6):
-
- cut polyderiv
- cor shell_cmd
- corrcoef studentize
- __error_text__ sylvester_matrix
- error_text
-
- ** The following functions have been modified for Matlab compatibility:
-
- randperm
-
-Summary of important user-visible changes for version 3.4.3 (2011-10-10):
-------------------------------------------------------------------------
-
- ** Octave 3.4.3 is a bug fixing release.
-
-Summary of important user-visible changes for version 3.4.2 (2011-06-24):
-------------------------------------------------------------------------
-
- ** Octave 3.4.2 fixes some minor installation problems that affected
- version 3.4.1.
-
-Summary of important user-visible changes for version 3.4.1 (2011-06-15):
-------------------------------------------------------------------------
-
- ** Octave 3.4.1 is primarily a bug fixing release.
-
- ** IMPORTANT note about binary incompatibility in this release:
-
- Binary compatibility for all 3.4.x releases was originally planned,
- but this is impossible for the 3.4.1 release due to a bug in the way
- shared libraries were built in Octave 3.4.0. Because of this bug,
- .oct files built for Octave 3.4.0 must be recompiled before they
- will work with Octave 3.4.1.
-
- Given that there would be binary incompatibilities with shared
- libraries going from Octave 3.4.0 to 3.4.1, the following
- incompatible changes were also made in this release:
-
- * The Perl Compatible Regular Expression (PCRE) library is now
- required to build Octave.
-
- * Octave's libraries and .oct files are now installed in
- subdirectories of $libdir instead of $libexecdir.
-
- Any future Octave 3.4.x release versions should remain binary
- compatible with Octave 3.4.1 as proper library versioning is now
- being used as recommended by the libtool manual.
-
- ** The following functions have been deprecated in Octave 3.4.1 and will
- be removed from Octave 3.8 (or whatever version is the second major
- release after 3.4):
-
- cquad is_duplicate_entry perror strerror
-
- ** The following functions are new in 3.4.1:
-
- colstyle gmres iscolumn isrow mgorth nproc rectangle
-
- ** The get_forge_pkg function is now private.
-
- ** The rectangle_lw, rectangle_sw, triangle_lw, and triangle_sw
- functions are now private.
-
- ** The logistic_regression_derivatives and logistic_regression_likelihood
- functions are now private.
-
- ** ChangeLog files in the Octave sources are no longer maintained
- by hand. Instead, there is a single ChangeLog file generated from
- the Mercurial version control commit messages. Older ChangeLog
- information can be found in the etc/OLD-ChangeLogs directory in the
- source distribution.
-
-Summary of important user-visible changes for version 3.4 (2011-02-08):
-----------------------------------------------------------------------
-
- ** BLAS and LAPACK libraries are now required to build Octave. The
- subset of the reference BLAS and LAPACK libraries has been removed
- from the Octave sources.
-
- ** The ARPACK library is now distributed with Octave so it no longer
- needs to be available as an external dependency when building
- Octave.
-
- ** The `lookup' function was extended to be more useful for
- general-purpose binary searching. Using this improvement, the
- ismember function was rewritten for significantly better
- performance.
-
- ** Real, integer and logical matrices, when used in indexing, will now
- cache the internal index_vector value (zero-based indices) when
- successfully used as indices, eliminating the conversion penalty for
- subsequent indexing by the same matrix. In particular, this means it
- is no longer needed to avoid repeated indexing by logical arrays
- using find for performance reasons.
-
- ** Logical matrices are now treated more efficiently when used as
- indices. Octave will keep the index as a logical mask unless the
- ratio of true elements is small enough, using a specialized
- code. Previously, all logical matrices were always first converted
- to index vectors. This results in savings in both memory and
- computing time.
-
- ** The `sub2ind' and `ind2sub' functions were reimplemented as compiled
- functions for better performance. These functions are now faster,
- can deliver more economized results for ranges, and can reuse the
- index cache mechanism described in previous paragraph.
-
- ** The built-in function equivalents to associative operators (`plus',
- `times', `mtimes', `and', and `or') have been extended to accept
- multiple arguments. This is especially useful for summing
- (multiplying, etc.) lists of objects (of possibly distinct types):
-
- matrix_sum = plus (matrix_list{:});
-
- ** An FTP object type based on libcurl has been implemented. These
- objects allow ftp connections, downloads and uploads to be
- managed. For example,
-
- fp = ftp ("ftp.octave.org);
- cd (fp, "gnu/octave");
- mget (fp, "octave-3.2.3.tar.bz2");
- close (fp);
-
- ** The default behavior of `assert (observed, expected)' has been
- relaxed to employ less strict checking that does not require the
- internals of the values to match. This avoids previously valid
- tests from breaking due to new internal classes introduced in future
- Octave versions.
-
- For instance, all of these assertions were true in Octave 3.0.x
- but false in 3.2.x due to new optimizations and improvements:
-
- assert (2*linspace (1, 5, 5), 2*(1:5))
- assert (zeros (0, 0), [])
- assert (2*ones (1, 5), (2) (ones (1,5)))
-
- ** The behavior of library functions `ismatrix', `issquare', and
- `issymmetric' has been changed for better consistency.
-
- * The `ismatrix' function now returns true for all numeric,
- logical and character 2-D or N-D matrices. Previously, `ismatrix'
- returned false if the first or second dimension was zero.
- Hence, `ismatrix ([])' was false,
- while `ismatrix (zeros (1,2,0))' was true.
-
- * The `issquare' function now returns a logical scalar, and is
- equivalent to the expression
-
- ismatrix (x) && ndims (x) == 2 && rows (x) == columns (x)
-
- The dimension is no longer returned. As a result, `issquare ([])'
- now yields true.
-
- * The `issymmetric' function now checks for symmetry instead of
- Hermitianness. For the latter, ishermitian was created. Also,
- logical scalar is returned rather than the dimension, so
- `issymmetric ([])' is now true.
-
- ** Function handles are now aware of overloaded functions. If a
- function is overloaded, the handle determines at the time of its
- reference which function to call. A non-overloaded version does not
- need to exist.
-
- ** Overloading functions for built-in classes (double, int8, cell,
- etc.) is now compatible with Matlab.
-
- ** Function handles can now be compared with the == and != operators,
- as well as the `isequal' function.
-
- ** Performance of concatenation (using []) and the functions `cat',
- `horzcat', and `vertcat' has been improved for multidimensional
- arrays.
-
- ** The operation-assignment operators +=, -=, *= and /= now behave more
- efficiently in certain cases. For instance, if M is a matrix and S a
- scalar, then the statement
-
- M += S;
-
- will operate on M's data in-place if it is not shared by another
- variable, usually increasing both time and memory efficiency.
-
- Only selected common combinations are affected, namely:
-
- matrix += matrix
- matrix -= matrix
- matrix .*= matrix
- matrix ./= matrix
-
- matrix += scalar
- matrix -= scalar
- matrix *= scalar
- matrix /= scalar
-
- logical matrix |= logical matrix
- logical matrix &= logical matrix
-
- where matrix and scalar belong to the same class. The left-hand
- side must be a simple variable reference.
-
- Moreover, when unary operators occur in expressions, Octave will
- also try to do the operation in-place if it's argument is a
- temporary expression.
-
- ** The effect of comparison operators (<, >, <=, and >=) applied to
- complex numbers has changed to be consistent with the strict
- ordering defined by the `max', `min', and `sort' functions. More
- specifically, complex numbers are compared by lexicographical
- comparison of the pairs `[abs(z), arg(z)]'. Previously, only real
- parts were compared; this can be trivially achieved by converting
- the operands to real values with the `real' function.
-
- ** The automatic simplification of complex computation results has
- changed. Octave will now simplify any complex number with a zero
- imaginary part or any complex matrix with all elements having zero
- imaginary part to a real value. Previously, this was done only for
- positive zeros. Note that the behavior of the complex function is
- unchanged and it still produces a complex value even if the
- imaginary part is zero.
-
- ** As a side effect of code refactoring in liboctave, the binary
- logical operations are now more easily amenable to compiler
- optimizations and are thus significantly faster.
-
- ** Octave now allows user-defined `subsasgn' methods to optimize out
- redundant copies. For more information, see the manual.
-
- ** More efficient matrix division handling. Octave is now able to
- handle the expressions
-
- M' \ V
- M.' \ V
- V / M
-
- (M is a matrix and V is a vector) more efficiently in certain cases.
- In particular, if M is triangular, all three expressions will be
- handled by a single call to xTRTRS (from LAPACK), with appropriate
- flags. Previously, all three expressions required a physical
- transpose of M.
-
- ** More efficient handling of certain mixed real-complex matrix
- operations. For instance, if RM is a real matrix and CM a complex
- matrix,
-
- RM * CM
-
- can now be evaluated either as
-
- complex (RM * real (CM), RM * imag (CM))
-
- or as
-
- complex (RM) * CM,
-
- depending on the dimensions. The first form requires more
- temporaries and copying, but halves the FLOP count, which normally
- brings better performance if RM has enough rows. Previously, the
- second form was always used.
-
- Matrix division is similarly affected.
-
- ** More efficient handling of triangular matrix factors returned from
- factorizations. The functions for computing QR, LU and Cholesky
- factorizations will now automatically return the triangular matrix
- factors with proper internal matrix_type set, so that it won't need
- to be computed when the matrix is used for division.
-
- ** The built-in `sum' function now handles the non-native summation
- (i.e., double precision sum of single or integer inputs) more
- efficiently, avoiding a temporary conversion of the whole input
- array to doubles. Further, `sum' can now accept an extra option
- argument, using a compensated summation algorithm rather than a
- straightforward sum, which significantly improves precision if lots
- of cancellation occurs in the summation.
-
- ** The built-in `bsxfun' function now uses optimized code for certain
- cases where built-in operator handles are passed in. Namely, the
- optimizations concern the operators `plus', `minus', `times',
- `ldivide', `rdivide', `power', `and', `or' (for logical arrays),
- the relational operators `eq', `ne', `lt', `le', `gt', `ge', and the
- functions `min' and `max'. Optimizations only apply when both
- operands are of the same built-in class. Mixed real/complex and
- single/double operations will first convert both operands to a
- common type.
-
- ** The `strfind' and `strrep' functions now have compiled
- implementations, facilitating significantly more efficient searching
- and replacing in strings, especially with longer patterns. The code
- of `strcat' has been vectorized and is now much more efficient when
- many strings are concatenated. The `strcmpi' and `strncmpi'
- functions are now built-in functions, providing better performance.
-
- ** 'str2double' now has a compiled implementation and the API conforms
- to Matlab. The additional Octave-specific features of returning a
- boolean matrix indicating which elements were successfully converted
- has been removed.
-
- ** Matlab-style ignoring input and output function arguments using
- tilde (~) is now supported. Ignored output arguments may be
- detected from a function using the built-in function `isargout'.
- For more details, consult the manual.
-
- ** The list datatype, deprecated since the introduction of cells, has
- been removed.
-
- ** The accumarray function has been optimized and is now significantly
- faster in certain important cases.
-
- ** The behavior of isreal and isnumeric functions was changed to be more
- Matlab-compatible.
-
- ** The integer math & conversion warnings (Octave:int-convert-nan,
- Octave:int-convert-non-int-val, Octave:int-convert-overflow,
- Octave:int-math-overflow) have been removed.
-
- ** rem and mod are now built-in functions. They also handle integer
- types efficiently using integer arithmetic.
-
- ** Sparse indexing and indexed assignment has been mostly rewritten.
- Since Octave uses compressed column storage for sparse matrices,
- major attention is devoted to operations manipulating whole columns.
- Such operations are now significantly faster, as well as some other
- important cases.
-
- Further, it is now possible to pre-allocate a sparse matrix and
- subsequently fill it by assignments, provided they meet certain
- conditions. For more information, consult the `spalloc' function,
- which is no longer a mere dummy. Consequently, nzmax and nnz are no
- longer always equal in Octave. Octave may also produce a matrix
- with nnz < nzmax as a result of other operations, so you should
- consistently use nnz unless you really want to use nzmax (i.e., the
- space allocated for nonzero elements).
-
- Sparse concatenation is also affected, and concatenating sparse
- matrices, especially larger collections, is now significantly more
- efficient. This applies to both the [] operator and the
- cat/vertcat/horzcat functions.
-
- ** It is now possible to optionally employ the xGESDD LAPACK drivers
- for computing the singular value decomposition using svd, instead
- of the default xGESVD, using the configuration pseudo-variable
- svd_driver. The xGESDD driver can be up to 6x times faster when
- singular vectors are requested, but is reported to be somewhat less
- robust on highly ill-conditioned matrices.
-
- ** Configuration pseudo-variables, such as page_screen_output or
- confirm_recursive_rmdir (or the above mentioned svd_driver), now
- accept a "local" option as second argument, requesting the change
- to be undone when the current function returns:
-
- function [status, msg] = rm_rf (dir)
- confirm_recursive_rmdir (false, "local");
- [status, msg] = rmdir (dir, "s");
- ...
- endfunction
-
- Upon return, confirm_recursive_rmdir will be restored to the value
- it had on entry to the function, even if there were subsequent
- changes to the variable in function rm_rf or any of the functions
- it calls.
-
- ** pkg now accepts a -forge option for downloading and installing
- packages from Octave Forge automatically. For example,
-
- pkg install -forge general
-
- will automatically download the latest release of the general
- package and attempt to install it. No automatic resolving of
- dependencies is provided. Further,
-
- pkg list -forge
-
- can be used to list all available packages.
-
- ** The internal data representation of structs has been completely
- rewritten to make certain optimizations feasible. The field data
- can now be shared between structs with equal keys but different
- dimensions or values, making operations that preserve the fields
- faster. Economized storage is now used for scalar structs (just
- like most other scalars), making their usage more
- memory-efficient. Certain array-like operations on structs
- (concatenation, uniform cellfun, num2cell) have gained a
- significant speed-up. Additionally, the octave_scalar_map class
- now provides a simpler interface to work with scalar structs within
- a C++ DLD function.
-
- ** Two new formats are available for displaying numbers:
-
- format short eng
- format long eng
-
- Both display numbers in engineering notation, i.e., mantissa +
- exponent where the exponent is a multiple of 3.
-
- ** The following functions are new in Octave 3.4:
- accumdim erfcx nfields pqpnonneg uigetdir
- bitpack fileread nth_element quadcc uigetfile
- bitunpack fminbnd onCleanup randi uiputfile
- blkmm fskipl pbaspect repelems uimenu
- cbrt ifelse pie3 reset whitebg
- curl ishermitian powerset rsf2csf
- chop isindex ppder saveas
- daspect luupdate ppint strread
- divergence merge ppjumps textread
-
- ** Using the image function to view images with external programs such
- as display, xv, and xloadimage is no longer supported. The
- image_viewer function has also been removed.
-
- ** The behavior of struct assignments to non-struct values has been
- changed. Previously, it was possible to overwrite an arbitrary
- value:
-
- a = 1;
- a.x = 2;
-
- This is no longer possible unless a is an empty matrix or cell
- array.
-
- ** The dlmread function has been extended to allow specifying a custom
- value for empty fields.
-
- ** The dlmread and dlmwrite functions have been modified to accept
- file IDs (as returned by fopen) in addition to file names.
-
- ** Octave can now optimize away the interpreter overhead of an
- anonymous function handle, if the function simply calls another
- function or handle with some of its parameters bound to certain
- values. Example:
-
- f = @(x) sum (x, 1);
-
- When f is called, the call is forwarded to @sum with the constant 1
- appended, and the anonymous function call does not occur on the
- call stack.
-
- ** For compatibility with Matlab, mu2lin (x) is now equivalent to
- mu2lin (x, 0).
-
- ** The new function `history_control' may be used to control the way
- command lines are added to the history list when Octave is using
- readline for command-line editing. For example
-
- history_control ("ignoredups")
-
- tells Octave to avoid adding duplicate lines to the history list.
-
- ** Octave now uses the gnulib library for improved portability and to
- avoid bugs in operating system functions.
-
- ** Deprecated functions.
-
- The following functions were deprecated in Octave 3.0 and have been
- removed from Octave 3.4.
-
- beta_cdf geometric_pdf pascal_pdf
- beta_inv geometric_rnd pascal_rnd
- beta_pdf hypergeometric_cdf poisson_cdf
- beta_rnd hypergeometric_inv poisson_inv
- binomial_cdf hypergeometric_pdf poisson_pdf
- binomial_inv hypergeometric_rnd poisson_rnd
- binomial_pdf intersection polyinteg
- binomial_rnd is_bool setstr
- chisquare_cdf is_complex struct_contains
- chisquare_inv is_list struct_elements
- chisquare_pdf is_matrix t_cdf
- chisquare_rnd is_scalar t_inv
- clearplot is_square t_pdf
- clg is_stream t_rnd
- com2str is_struct uniform_cdf
- exponential_cdf is_symmetric uniform_inv
- exponential_inv is_vector uniform_pdf
- exponential_pdf isstr uniform_rnd
- exponential_rnd lognormal_cdf weibcdf
- f_cdf lognormal_inv weibinv
- f_inv lognormal_pdf weibpdf
- f_pdf lognormal_rnd weibrnd
- f_rnd meshdom weibull_cdf
- gamma_cdf normal_cdf weibull_inv
- gamma_inv normal_inv weibull_pdf
- gamma_pdf normal_pdf weibull_rnd
- gamma_rnd normal_rnd wiener_rnd
- geometric_cdf pascal_cdf
- geometric_inv pascal_inv
-
- The following functions were deprecated in Octave 3.2 and will
- be removed from Octave 3.6 (or whatever version is the second major
- release after 3.2):
-
- create_set spcholinv splu
- dmult spcumprod spmax
- iscommand spcumsum spmin
- israwcommand spdet spprod
- lchol spdiag spqr
- loadimage spfind spsum
- mark_as_command sphcat spsumsq
- mark_as_rawcommand spinv spvcat
- spatan2 spkron str2mat
- spchol splchol unmark_command
- spchol2inv split unmark_rawcommand
-
- The following functions have been deprecated in Octave 3.4 and will
- be removed from Octave 3.8 (or whatever version is the second major
- release after 3.4):
-
- autocor cellidx gammai is_global replot values
- autocov dispatch glpkmex krylovb saveimage
- betai fstat intwarning perror strerror
-
-Summary of important user-visible changes for version 3.2 (2009-06-05):
-----------------------------------------------------------------------
-
- ** Compatibility with Matlab graphics has been improved.
-
- The hggroup object and associated listener callback functions have
- been added allowing the inclusion of group objects. Data sources
- have been added to these group objects such that
-
- x = 0:0.1:10;
- y = sin (x);
- plot (x, y, "ydatasource", "y");
- for i = 1 : 100
- pause(0.1)
- y = sin (x + 0.1 * i);
- refreshdata ();
- endfor
-
- works as expected. This capability has be used to introduce
- stem-series, bar-series, etc., objects for better Matlab
- compatibility.
-
- ** New graphics functions:
-
- addlistener ezcontour gcbo refresh
- addproperty ezcontourf ginput refreshdata
- allchild ezmesh gtext specular
- available_graphics_toolkits ezmeshc intwarning surfl
- graphics_toolkit ezplot ishghandle trisurf
- cla ezplot3 isocolors waitforbuttonpress
- clabel ezpolar isonormals
- comet ezsurf isosurface
- dellistener findall linkprop
- diffuse gcbf plotmatrix
-
- ** New experimental OpenGL/FLTK based plotting system.
-
- An experimental plotting system based on OpenGL and the FLTK
- toolkit is now part of Octave. This graphics toolkit is disabled by
- default. You can switch to using it with the command
-
- graphics_toolkit ("fltk")
-
- for all future figures or for a particular figure with the command
-
- graphics_toolkit (h, "fltk")
-
- where "h" is a valid figure handle.
-
- ** Functions providing direct access to gnuplot have been removed.
-
- The functions __gnuplot_plot__, __gnuplot_set__, __gnuplot_raw__,
- __gnuplot_show__, __gnuplot_replot__, __gnuplot_splot__,
- __gnuplot_save_data__ and __gnuplot_send_inline_data__ have been
- removed from Octave. These function were incompatible with the
- high level graphics handle code.
-
- ** The Control, Finance and Quaternion functions have been removed.
-
- These functions are now available as separate packages from
-
- http://octave.sourceforge.net/packages.html
-
- and can be reinstalled using the Octave package manager (see
- the pkg function).
-
- ** Specific sparse matrix functions removed.
-
- The following functions, which handled only sparse matrices have
- been removed. Instead of calling these functions directly, you
- should use the corresponding function without the "sp" prefix.
-
- spatan2 spcumsum spkron spprod
- spchol spdet splchol spqr
- spchol2inv spdiag splu spsum
- spcholinv spfind spmax spsumsqk
- spcumprod spinv spmin
-
- ** Improvements to the debugger.
-
- The interactive debugging features have been improved. Stopping
- on statements with dbstop should work correctly now. Stepping
- into and over functions, and stepping one statement at a time
- (with dbstep) now works. Moving up and down the call stack with
- dbup and dbdown now works. The dbstack function is now available
- to print the current function call stack. The new dbquit function
- is available to exit the debugging mode.
-
- ** Improved traceback error messages.
-
- Traceback error messages are much more concise and easier to
- understand. They now display information about the function call
- stack instead of the stack of all statements that were active at
- the point of the error.
-
- ** Object Oriented Programming.
-
- Octave now includes OOP features and the user can create their own
- class objects and overloaded functions and operators. For
- example, all methods of a class called "myclass" will be found in
- a directory "@myclass" on the users path. The class specific
- versions of functions and operators take precedence over the
- generic versions of these functions.
-
- New functions related to OOP include
-
- class inferiorto isobject loadobj methods superiorto
-
- See the Octave manual for more details.
-
- ** Parsing of Command-style Functions.
-
- Octave now parses command-style functions without needing to first
- declare them with "mark_as_command". The rules for recognizing a
- command-style function calls are
-
- * A command must appear as the first word in a statement,
- followed by a space.
-
- * The first character after the space must not be '=' or '('
-
- * The next token after the space must not look like a binary
- operator.
-
- These rules should be mostly compatible with the way Matlab parses
- command-style function calls and allow users to define commands in
- .m files without having to mark them as commands.
-
- Note that previous versions of Octave allowed expressions like
-
- x = load -text foo.dat
-
- but an expression like this will now generate a parse error. In
- order to assign the value returned by a function to a variable,
- you must use the normal function call syntax:
-
- x = load ("-text", "foo.dat");
-
- ** Block comments.
-
- Commented code can be between matching "#{" and "#}" or "%{" and
- "%}" markers, even if the commented code spans several line. This
- allows blocks code to be commented, without needing to comment
- each line. For example,
-
- function [s, t] = func (x, y)
- s = 2 * x;
- #{
- s *= y;
- t = y + x;
- #}
- endfunction
-
- the lines "s *= y;" and "t = y + x" will not be executed.
-
- ** If any subfunction in a file ends with "end" or "endfunction", then
- they all must end that way. Previously, Octave accepted
-
- function main ()
- ...
- # no endfunction here.
- function sub ()
- ...
- endfunction
-
- but this is no longer allowed.
-
- ** Special treatment in the parser of expressions like "a' * b".
-
- In these cases the transpose is no longer explicitly formed and
- BLAS libraries are called with the transpose flagged,
- significantly improving performance for these kinds of
- operations.
-
- ** Single Precision data type.
-
- Octave now includes a single precision data type. Single
- precision variables can be created with the "single" command, or
- from functions like ones, eye, etc. For example,
-
- single (1)
- ones (2, 2, "single")
- zeros (2, 2, "single")
- eye (2, 2, "single")
- Inf (2, 2, "single")
- NaN (2, 2, "single")
- NA (2, 2, "single")
-
- all create single precision variables. For compatibility with
- Matlab, mixed double/single precision operators and functions
- return single precision types.
-
- As a consequence of this addition to Octave the internal
- representation of the double precision NA value has changed, and
- so users that make use of data generated by Octave with R or
- visa-versa are warned that compatibility might not be assured.
-
- ** Improved array indexing.
-
- The underlying code used for indexing of arrays has been
- completely rewritten and indexing is now significantly faster.
-
- ** Improved memory management.
-
- Octave will now attempt to share data in some cases where previously
- a copy would be made, such as certain array slicing operations or
- conversions between cells, structs and cs-lists. This usually reduces
- both time and memory consumption.
- Also, Octave will now attempt to detect and optimize usage of a vector
- as a stack, when elements are being repeatedly inserted at/removed from
- the end of the vector.
-
- ** Improved performance for reduction operations.
-
- The performance of the sum, prod, sumsq, cumsum, cumprod, any, all,
- max and min functions has been significantly improved.
-
- ** Sorting and searching.
-
- The performance of sort has been improved, especially when sorting
- indices are requested. An efficient built-in issorted
- implementation was added. The sortrows function now uses a more
- efficient algorithm, especially in the homogeneous case. The lookup
- function is now a built-in function performing a binary search,
- optimized for long runs of close elements. Lookup also works with
- cell arrays of strings.
-
- ** Range arithmetics
-
- For some operations on ranges, Octave will attempt to keep the
- result as a range. These include negation, adding a scalar,
- subtracting a scalar, and multiplying by a scalar. Ranges with zero
- increment are allowed and can be constructed using the built-in
- function `ones'.
-
- ** Various performance improvements.
-
- Performance of a number of other built-in operations and functions
- was improved, including:
-
- * logical operations
- * comparison operators
- * element-wise power
- * accumarray
- * cellfun
- * isnan
- * isinf
- * isfinite
- * nchoosek
- * repmat
- * strcmp
-
- ** 64-bit integer arithmetic.
-
- Arithmetic with 64-bit integers (int64 and uint64 types) is fully
- supported, with saturation semantics like the other integer types.
- Performance of most integer arithmetic operations has been
- improved by using integer arithmetic directly. Previously, Octave
- performed integer math with saturation semantics by converting the
- operands to double precision, performing the operation, and then
- converting the result back to an integer value, truncating if
- necessary.
-
- ** Diagonal and permutation matrices.
-
- The interpreter can now treat diagonal and permutation matrices as
- special objects that store only the non-zero elements, rather than
- general full matrices. Therefore, it is now possible to construct
- and use these matrices in linear algebra without suffering a
- performance penalty due to storing large numbers of zero elements.
-
- ** Improvements to fsolve.
-
- The fsolve function now accepts an option structure argument (see
- also the optimset function). The INFO values returned from fsolve
- have changed to be compatible with Matlab's fsolve function.
- Additionally, fsolve is now able to solve overdetermined systems,
- complex-differentiable complex systems, systems with a sparse
- jacobian and can work in single precision if given single precision
- inputs. It can also be called recursively.
-
- ** Improvements to the norm function.
-
- The norm function is now able to compute row or column norms of a
- matrix in a single call, as well as general matrix p-norms.
-
- ** New functions for computing some eigenvalues or singular values.
-
- The eigs and svds functions have been included in Octave. These
- functions require the ARPACK library (now distributed under a
- GPL-compatible license).
-
- ** New QR and Cholesky factorization updating functions.
-
- choldelete cholshift qrdelete qrshift
- cholinsert cholupdate qrinsert qrupdate
-
- ** New quadrature functions.
-
- dblquad quadgk quadv triplequad
-
- ** New functions for reading and writing images.
-
- The imwrite and imread functions have been included in Octave.
- These functions require the GraphicsMagick library. The new
- function imfinfo provides information about an image file (size,
- type, colors, etc.)
-
- ** The input_event_hook function has been replaced by the pair of
- functions add_input_event_hook and remove_input_event_hook so that
- more than one hook function may be installed at a time.
-
- ** Other miscellaneous new functions.
-
- addtodate hypot reallog
- bicgstab idivide realpow
- cellslices info realsqrt
- cgs interp1q rectint
- command_line_path isdebugmode regexptranslate
- contrast isfloat restoredefaultpath
- convn isstrprop roundb
- cummin log1p rundemos
- cummax lsqnonneg runlength
- datetick matlabroot saveobj
- display namelengthmax spaugment
- expm1 nargoutchk strchr
- filemarker pathdef strvcat
- fstat perl subspace
- full prctile symvar
- fzero quantile treelayout
- genvarname re_read_readline_init_file validatestring
- histc
-
- ** Changes to strcat.
-
- The strcat function is now compatible with Matlab's strcat
- function, which removes trailing whitespace when concatenating
- character strings. For example
-
- strcat ('foo ', 'bar')
- ==> 'foobar'
-
- The new function cstrcat provides the previous behavior of
- Octave's strcat.
-
- ** Improvements to the help functions.
-
- The help system has been mostly re-implemented in .m files to make
- it easier to modify. Performance of the lookfor function has been
- greatly improved by caching the help text from all functions that
- are distributed with Octave. The pkg function has been modified
- to generate cache files for external packages when they are
- installed.
-
- ** Deprecated functions.
-
- The following functions were deprecated in Octave 3.0 and will be
- removed from Octave 3.4 (or whatever version is the second major
- release after 3.0):
-
- beta_cdf geometric_pdf pascal_pdf
- beta_inv geometric_rnd pascal_rnd
- beta_pdf hypergeometric_cdf poisson_cdf
- beta_rnd hypergeometric_inv poisson_inv
- binomial_cdf hypergeometric_pdf poisson_pdf
- binomial_inv hypergeometric_rnd poisson_rnd
- binomial_pdf intersection polyinteg
- binomial_rnd is_bool setstr
- chisquare_cdf is_complex struct_contains
- chisquare_inv is_list struct_elements
- chisquare_pdf is_matrix t_cdf
- chisquare_rnd is_scalar t_inv
- clearplot is_square t_pdf
- clg is_stream t_rnd
- com2str is_struct uniform_cdf
- exponential_cdf is_symmetric uniform_inv
- exponential_inv is_vector uniform_pdf
- exponential_pdf isstr uniform_rnd
- exponential_rnd lognormal_cdf weibcdf
- f_cdf lognormal_inv weibinv
- f_inv lognormal_pdf weibpdf
- f_pdf lognormal_rnd weibrnd
- f_rnd meshdom weibull_cdf
- gamma_cdf normal_cdf weibull_inv
- gamma_inv normal_inv weibull_pdf
- gamma_pdf normal_pdf weibull_rnd
- gamma_rnd normal_rnd wiener_rnd
- geometric_cdf pascal_cdf
- geometric_inv pascal_inv
-
- The following functions are now deprecated in Octave 3.2 and will
- be removed from Octave 3.6 (or whatever version is the second major
- release after 3.2):
-
- create_set spcholinv spmax
- dmult spcumprod spmin
- iscommand spcumsum spprod
- israwcommand spdet spqr
- lchol spdiag spsum
- loadimage spfind spsumsq
- mark_as_command spinv str2mat
- mark_as_rawcommand spkron unmark_command
- spatan2 splchol unmark_rawcommand
- spchol split
- spchol2inv splu
-
-Summary of important user-visible changes for version 3.0 (2007-12-21):
-----------------------------------------------------------------------
-
- ** Compatibility with Matlab graphics is much better now. We now
- have some graphics features that work like Matlab's Handle
- Graphics (tm):
-
- + You can make a subplot and then use the print function to
- generate a file with the plot.
-
- + RGB line colors are supported if you use gnuplot 4.2. Octave
- can still use gnuplot 4.0, but there is no way to set arbitrary
- line colors with it when using the Matlab-style plot functions.
- There never was any way to do this reliably with older versions
- of gnuplot (whether run from Octave or not) since it only
- provided a limited set to choose from, and they were terminal
- dependent, so choosing color 1 with the X11 terminal would be
- different from color 1 with the PostScript terminal. Valid RGB
- colors for gnuplot 4.0 are the eight possible combinations of 0
- and 1 for the R, G and B values. Invalid values are all mapped
- to the same color.
-
- This also affects patch objects used in the bar, contour, meshc
- and surfc functions, where the bars and contours will be
- monochrome. A workaround for this is to type "colormap gmap40"
- that loads a colormap that in many cases will be adequate for
- simple bar and contour plots.
-
- + You can control the width of lines using (for example):
-
- line (x, y, "linewidth", 4, "color", [1, 0, 0.5]);
-
- (this also shows the color feature).
-
- + With gnuplot 4.2, image data is plotted with gnuplot and may be
- combined with other 2-d plot data.
-
- + Lines for contour plots are generated with an Octave function, so
- contour plots are now 2-d plots instead of special 3-d plots, and
- this allows you to plot additional 2-d data on top of a contour
- plot.
-
- + With the gnuplot "extended" terminals the TeX interpreter is
- emulated. However, this means that the TeX interpreter is only
- supported on the postscript terminals with gnuplot 4.0. Under
- gnuplot 4.2 the terminals aqua, dumb, png, jpeg, gif, pm, windows,
- wxt, svg and x11 are supported as well.
-
- + The following plot commands are now considered obsolete and will
- be removed from a future version of Octave:
-
- __gnuplot_set__
- __gnuplot_show__
- __gnuplot_plot__
- __gnuplot_splot__
- __gnuplot_replot__
-
- Additionally, these functions no longer have any effect on plots
- created with the Matlab-style plot commands (plot, line, mesh,
- semilogx, etc.).
-
- + Plot property values are not extensively checked. Specifying
- invalid property values may produce unpredictable results.
-
- + Octave now sends data over the same pipe that is used to send
- commands to gnuplot. While this avoids the problem of
- cluttering /tmp with data files, it is no longer possible to use
- the mouse to zoom in on plots. This is a limitation of gnuplot,
- which is unable to zoom when the data it plots is not stored in
- a file. Some work has been done to fix this problem in newer
- versions of gnuplot (> 4.2.2). See for example, this thread
-
- http://www.nabble.com/zooming-of-inline-data-tf4357017.html#a12416496
-
- on the gnuplot development list.
-
-
- ** The way Octave handles search paths has changed. Instead of
- setting the built-in variable LOADPATH, you must use addpath,
- rmpath, or path to manipulate the function search path. These
- functions will maintain "." at the head of the path, for
- compatibility with Matlab.
-
- Leading, trailing or doubled colons are no longer special.
- Now, all elements of the search path are explicitly included in
- the path when Octave starts. To display the path, use the path
- function.
-
- Path elements that end in // are no longer searched recursively.
- Instead, you may use addpath and the genpath function to add an
- entire directory tree to the path. For example,
-
- addpath (genpath ("~/octave"));
-
- will add ~/octave and all directories below it to the head of the
- path.
-
-
- ** Previous versions of Octave had a number of built-in variables to
- control warnings (for example, warn_divide_by_zero). These
- variables have been replaced by warning identifiers that are used
- with the warning function to control the state of warnings.
-
- For example, instead of writing
-
- warn_divide_by_zero = false;
-
- to disable divide-by-zero warnings, you should write
-
- warning ("off", "Octave:divide-by-zero");
-
- You may use the same technique in your own code to control
- warnings. For example, you can use
-
- warning ("My-package:phase-of-the-moon",
- "the phase of the moon could cause trouble today");
-
- to allow users to control this warning using the
- "My-package:phase-of-the-moon" warning identifier.
-
- You may also enable or disable all warnings, or turn them into
- errors:
-
- warning ("on", "all");
- warning ("off", "all");
- warning ("error", "Octave:divide-by-zero");
- warning ("error", "all");
-
- You can query the state of current warnings using
-
- warning ("query", ID)
- warning ("query")
-
- (only those warning IDs which have been explicitly set are
- returned).
-
- A partial list and description of warning identifiers is available
- using
-
- help warning_ids
-
-
- ** All built-in variables have been converted to functions. This
- change simplifies the interpreter and allows a consistent
- interface to internal variables for user-defined packages and the
- core functions distributed with Octave. In most cases, code that
- simply accesses internal variables does not need to change. Code
- that sets internal variables will change. For example, instead of
- writing
-
- PS1 = ">> ";
-
- you will need to write
-
- PS1 (">> ");
-
- If you need write code that will run in both old and new versions
- of Octave, you can use something like
-
- if (exist ("OCTAVE_VERSION") == 5)
- ## New:
- PS1 (">> ");
- else
- ## Old:
- PS1 = ">> ";
- endif
-
-
- ** For compatibility with Matlab, the output order of Octave's
- "system" function has changed from
-
- [output, status] = system (cmd);
-
- to
-
- [status, output] = system (cmd);
-
-
- ** For compatibility with Matlab, the output of Octave's fsolve
- function has been changed from
-
- [x, info, msg] = fsolve (...);
-
- to
-
- [x, fval, info] = fsolve (...);
-
-
- ** For compatibility with Matlab, normcdf, norminv, normpdf, and
- normrnd have been modified to compute distributions using the
- standard deviation instead of the variance.
-
-
- ** For compatibility with Matlab, gamcdf, gaminv, gampdf, gamrnd,
- expcdf, expinv, exppdf and exprnd have been modified to compute
- the distributions using the standard scale factor rather than
- one over the scale factor.
-
----------------------------------------------------------
-
-See NEWS.2 for old news.
diff -r 7ecd07721cca -r 86ddba86efbe etc/NEWS.3.md
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/NEWS.3.md Wed Dec 08 22:43:24 2021 +0900
@@ -0,0 +1,1721 @@
+Summary of important user-visible changes for version 3.8 (2013-12-27):
+----------------------------------------------------------------------
+
+ ** One of the biggest new features for Octave 3.8 is a graphical user
+ interface. It is the one thing that users have requested most
+ often over the last few years and now it is almost ready. But
+ because it is not quite as polished as we would like, we have
+ decided to wait until the 4.0.x release series before making the
+ GUI the default interface (until then, you can use the --force-gui
+ option to start the GUI).
+
+ Given the length of time and the number of bug fixes and
+ improvements since the last major release Octave, we also decided
+ against delaying the release of all these new improvements any
+ longer just to perfect the GUI. So please enjoy the 3.8 release of
+ Octave and the preview of the new GUI. We believe it is working
+ reasonably well, but we also know that there are some obvious rough
+ spots and many things that could be improved.
+
+ WE NEED YOUR HELP. There are many ways that you can help us fix
+ the remaining problems, complete the GUI, and improve the overall
+ user experience for both novices and experts alike:
+
+ * If you are a skilled software developer, you can help by
+ contributing your time to help with Octave's development. See
+ http://octave.org/get-involved.html for more information.
+
+ * If Octave does not work properly, you are encouraged
+ report the problems you find. See http://octave.org/bugs.html
+ for more information about how to report problems.
+
+ * Whether you are a user or developer, you can help to fund the
+ project. Octave development takes a lot of time and expertise.
+ Your contributions help to ensure that Octave will continue to
+ improve. See http://octave.org/donate.html for more details.
+
+ We hope you find Octave to be useful. Please help us make it even
+ better for the future!
+
+ ** Octave now uses OpenGL graphics by default with FLTK widgets. If
+ OpenGL libraries or FLTK widgets are not available when Octave is
+ built, gnuplot is used. You may also choose to use gnuplot for
+ graphics by executing the command
+
+ graphics_toolkit ("gnuplot")
+
+ Adding this command to your ~/.octaverc file will set the default
+ for each session.
+
+ ** Printing or saving figures with OpenGL graphics requires the
+ gl2ps library which is no longer distributed with Octave. The
+ software is widely available in most package managers. If a
+ pre-compiled package does not exist for your system, you can find
+ the current sources at http://www.geuz.org/gl2ps/.
+
+ ** Octave now supports nested functions with scoping rules that are
+ compatible with Matlab. A nested function is one declared and defined
+ within the body of another function. The nested function is only
+ accessible from within the enclosing function which makes it one
+ method for making private functions whose names do not conflict with those
+ in the global namespace (See also subfunctions and private functions).
+ In addition, variables in the enclosing function are visible within the
+ nested function. This makes it possible to have a pseudo-global variable
+ which can be seen by a group of functions, but which is not visible in
+ the global namespace.
+
+ Example:
+ function outerfunc (...)
+ ...
+ function nested1 (...)
+ ...
+ function nested2 (...)
+ ...
+ endfunction
+ endfunction
+
+ function nested3 (...)
+ ...
+ endfunction
+ endfunction
+
+ ** Line continuations inside character strings have changed.
+
+ The sequence '...' is no longer recognized as a line continuation
+ inside a character string. A backslash '\' followed by a newline
+ character is no longer recognized as a line continuation inside
+ single-quoted character strings. Inside double-quoted character
+ strings, a backslash followed by a newline character is still
+ recognized as a line continuation, but the backslash character must
+ be followed *immediately* by the newline character. No whitespace or
+ end-of-line comment may appear between them.
+
+ ** Backslash as a continuation marker outside of double-quoted strings
+ is now deprecated.
+
+ Using '\' as a continuation marker outside of double quoted strings
+ is now deprecated and will be removed from a future version of
+ Octave. When that is done, the behavior of
+
+ (a \
+ b)
+
+ will be consistent with other binary operators.
+
+ ** Redundant terminal comma accepted by parser
+
+ A redundant terminal comma is now accepted in matrix
+ definitions which allows writing code such as
+
+ [a,...
+ b,...
+ c,...
+ ] = deal (1,2,3)
+
+ ** Octave now has limited support for named exceptions
+
+ The following syntax is now accepted:
+
+ try
+ statements
+ catch exception-id
+ statements
+ end
+
+ The exception-id is a structure with the fields "message" and
+ "identifier". For example
+
+ try
+ error ("Octave:error-id", "error message");
+ catch myerr
+ printf ("identifier: %s\n", myerr.identifier);
+ printf ("message: %s\n", myerr.message);
+ end_try_catch
+
+ When classdef-style classes are added to Octave, the exception-id
+ will become an MException object.
+
+ ** Warning states may now be set temporarily, until the end of the
+ current function, using the syntax
+
+ warning STATE ID "local"
+
+ in which STATE may be "on", "off", or "error". Changes to warning
+ states that are set locally affect the current function and all
+ functions called from the current scope. The previous warning state
+ is restored on return from the current function. The "local"
+ option is ignored if used in the top-level workspace.
+
+ ** Warning IDs renamed:
+
+ Octave:array-as-scalar => Octave:array-to-scalar
+ Octave:array-as-vector => Octave:array-to-vector
+
+ ** 'emptymatch', 'noemptymatch' options added to regular expressions.
+
+ With this addition Octave now accepts the entire set of Matlab options
+ for regular expressions. 'noemptymatch' is the default, but 'emptymatch'
+ has certain uses where you need to match an assertion rather than actual
+ characters. For example,
+
+ regexprep ('World', '^', 'Hello ', 'emptymatch')
+ => Hello World
+
+ where the pattern is actually the assertion '^' or start-of-line.
+
+ ** For compatibility with Matlab, the regexp, regexpi, and regexprep
+ functions now process backslash escape sequences in single-quoted pattern
+ strings. In addition, the regexprep function now processes backslash
+ escapes in single-quoted replacement strings. For example,
+
+ regexprep (str, '\t', '\n')
+
+ would search the variable str for a TAB character (escape sequence \t)
+ and replace it with a NEWLINE (escape sequence \n). Previously the
+ expression would have searched for a literal '\' followed by 't' and
+ replaced the two characters with the sequence '\', 'n'.
+
+ ** A TeX parser has been implemented for the FLTK toolkit and is the default
+ for any text object including titles and axis labels. The TeX parser is
+ supported only for display on a monitor, not for printing.
+
+ A quick summary of features:
+
+ Code Feature Example Comment
+ -----------------------------------------------------------------
+ _ subscript H_2O formula for water
+ ^ exponent y=x^2 formula for parabola
+ \char symbol \beta Greek symbol beta
+ \fontname font \fontname{Arial} set Arial font
+ \fontsize fontsize \fontsize{16} set fontsize 16
+ \color[rgb] fontcolor \color[rgb]{1 0 1} set magenta color
+ \bf bold \bfBold Text bold font
+ \it italic \itItalic Text italic font
+ \sl slanted \slOblique Text slanted font
+ \rm normal \bfBold\rmNormal normal font
+ {} group {\bf Bold}Normal group objects
+ e^{i*\pi} = -1 group objects
+
+ ** The m-files in the plot directory have been overhauled.
+
+ The plot functions now produce output that is nearly visually compatible
+ with Matlab. Plot performance has also increased, dramatically for some
+ functions such as comet and waitbar. Finally, the documentation for most
+ functions has been updated so it should be clearer both how to use a
+ function and when a function is appropriate.
+
+ ** The m-files in the image directory have been overhauled.
+
+ The principal benefit is that Octave will now no longer automatically
+ convert images stored with integers to doubles. Storing images as uint8
+ or uint16 requires only 1/8 or 1/4 the memory of an image stored using
+ doubles. For certain operations, such as fft2, the image must still be
+ converted to double in order to work.
+
+ Other changes include fixes to the way indexed images are read from a
+ colormap depending on the image class (integer images have a -1 offset to
+ the colormap row number).
+
+ ** The imread and imwrite functions have been completely rewritten.
+
+ The main changes relate to the alpha channel, support for reading and
+ writing of floating point images, implemented writing of indexed images,
+ and appending images to multipage image files.
+
+ The issues that may arise due to backwards incompatibility are:
+
+ * imwrite no longer interprets a length of 2 or 4 in the third dimension
+ as grayscale or RGB with alpha channel (a length of 4 will be saved
+ as a CMYK image). Alpha channel must be passed as separate argument.
+
+ * imread will always return the colormap indexes when reading an indexed
+ image, even if the colormap is not requested as output.
+
+ * transparency values are now inverted from previous Octave versions
+ (0 is for completely transparent instead of completely opaque).
+
+ In addition, the function imformats has been implemented to expand
+ reading and writing of images of different formats through imread
+ and imwrite.
+
+ ** The colormap function now provides new options--"list", "register",
+ and "unregister"--to list all available colormap functions, and to
+ add or remove a function name from the list of known colormap
+ functions. Packages that implement extra colormaps should use these
+ commands with PKG_ADD and PKG_DEL statements.
+
+ ** strsplit has been modified to be compatible with Matlab. There
+ are two instances where backward compatibility is broken.
+
+ (1) Delimiters are now string vectors, not scalars.
+
+ Octave's legacy behavior
+
+ strsplit ("1 2, 3", ", ")
+ ans =
+ {
+ [1,1] = 1
+ [1,2] = 2
+ [1,3] =
+ [1,4] = 3
+ }
+
+ Matlab compatible behavior
+
+ strsplit ("1 2, 3", ", ")
+ ans =
+ {
+ [1,1] = 1 2
+ [1,2] = 3
+ }
+
+ (2) By default, Matlab treats consecutive delimiters as a single
+ delimiter. By default, Octave's legacy behavior was to return an
+ empty string for the part between the delmiters.
+
+ Where legacy behavior is desired, the call to strsplit() may be
+ replaced by ostrsplit(), which is Octave's original implementation of
+ strsplit().
+
+ ** The datevec function has been extended for better Matlab compatibility.
+ It now accepts string inputs in the following numerical formats: 12, 21,
+ 22, 26, 29, 31. This is undocumented, but verifiable, Matlab behavior.
+ In addition, the default for formats which do not specify a date is
+ January 1st of the current year. The previous default was the current day,
+ month, and year. This may produce changes in existing scripts.
+
+ ** The error function and its derivatives has been extended to accept complex
+ arguments. The following functions now accept complex inputs:
+
+ erf erfc erfcx
+
+ In addition two new error functions erfi (imaginary error function) and
+ dawson (scaled imaginary error function) have been added.
+
+ ** The glpk function has been modified to reflect changes in the GLPK
+ library. The "round" and "itcnt" options have been removed. The
+ "relax" option has been replaced by the "rtest" option. The numeric
+ values of error codes and of some options have also changed.
+
+ ** The kurtosis function has changed definition to be compatible with
+ Matlab. It now returns the base kurtosis instead of the "excess kurtosis".
+ The old behavior can be had by changing scripts to normalize with -3.
+
+ "excess kurtosis" = kurtosis (x) - 3
+
+ ** The moment function has changed definition to be compatible with
+ Matlab. It now returns the central moment instead of the raw moment.
+ The old behavior can be had by passing the type argument "r" for raw.
+
+ ** The default name of the Octave crash dump file is now
+ "octave-workspace" instead of "octave-core". The exact name can
+ always be customized with the octave_core_file_name function.
+
+ ** A citation command has been added to display information on how to
+ cite Octave and packages in publications. The package system will
+ look for and install CITATION files from packages.
+
+ ** The java package from Octave Forge is now part of core Octave. The
+ following new functions are available for interacting with Java
+ directly from Octave:
+
+ debug_java java_matrix_autoconversion
+ isjava java_unsigned_autoconversion
+ java2mat javaaddpath
+ javaArray javaclasspath
+ javaMethod javamem
+ javaObject javarmpath
+ usejava
+
+ In addition, the following functions that use the Java interface
+ are now available (provided that Octave is compiled with support for
+ Java enabled):
+
+ helpdlg listdlg questdlg
+ inputdlg msgbox warndlg
+
+ ** Other new functions added in 3.8.0:
+
+ atan2d erfi lines
+ base64_decode expint linsolve
+ base64_encode findfigs missing_component_hook
+ betaincinv flintmax polyeig
+ built_in_docstrings_file fminsearch prefdir
+ cmpermute gallery preferences
+ cmunique gco readline_re_read_init_file
+ colorcube hdl2struct readline_read_init_file
+ copyobj history_save rgbplot
+ dawson imformats save_default_options
+ dblist importdata shrinkfaces
+ desktop isaxes splinefit
+ doc_cache_create iscolormap stemleaf
+ ellipj isequaln strjoin
+ ellipke jit_debug struct2hdl
+ erfcinv jit_enable tetramesh
+ jit_startcnt waterfall
+
+ ** Deprecated functions.
+
+ The following functions were deprecated in Octave 3.4 and have been
+ removed from Octave 3.8.
+
+ autocor dispatch is_global setstr
+ autocov fstat krylovb strerror
+ betai gammai perror values
+ cellidx glpkmex replot
+ cquad is_duplicate_entry saveimage
+
+ The following functions have been deprecated in Octave 3.8 and will
+ be removed from Octave 3.12 (or whatever version is the second major
+ release after 3.8):
+
+ default_save_options java_new
+ gen_doc_cache java_set
+ interp1q java_unsigned_conversion
+ isequalwithequalnans javafields
+ java_convert_matrix javamethods
+ java_debug re_read_readline_init_file
+ java_get read_readline_init_file
+ java_invoke saving_history
+
+
+ The following keywords have been deprecated in Octave 3.8 and will
+ be removed from Octave 3.12 (or whatever version is the second major
+ release after 3.8):
+
+ static
+
+ The following configuration variables have been deprecated in Octave
+ 3.8 and will be removed from Octave 3.12 (or whatever version is the
+ second major release after 3.8):
+
+ CC_VERSION (now GCC_VERSION)
+ CXX_VERSION (now GXX_VERSION)
+
+ The internal class has been deprecated in Octave 3.8 and will
+ be removed from Octave 3.12 (or whatever version is the second major
+ release after 3.8). Replacement classes are (struct array)
+ or for a single structure.
+
+Summary of important user-visible changes for version 3.6 (2012-01-15):
+----------------------------------------------------------------------
+
+ ** The PCRE library is now required to build Octave. If a pre-compiled
+ package does not exist for your system, you can find PCRE sources
+ at http://www.pcre.org
+
+ ** The ARPACK library is no longer distributed with Octave.
+ If you need the eigs or svds functions you must provide an
+ external ARPACK through a package manager or by compiling it
+ yourself. If a pre-compiled package does not exist for your system,
+ you can find the current ARPACK sources at
+ http://forge.scilab.org/index.php/p/arpack-ng
+
+ ** Many of Octave's binary operators (.*, .^, +, -, ...) now perform
+ automatic broadcasting for array operations which allows you to use
+ operator notation instead of calling bsxfun or expanding arrays (and
+ unnecessarily wasting memory) with repmat or similar idioms. For
+ example, to scale the columns of a matrix by the elements of a row
+ vector, you may now write
+
+ rv .* M
+
+ In this expression, the number of elements of rv must match the
+ number of columns of M. The following operators are affected:
+
+ plus + .+
+ minus - .-
+ times .*
+ rdivide ./
+ ldivide .\
+ power .^ .**
+ lt <
+ le <=
+ eq ==
+ gt >
+ ge >=
+ ne != ~=
+ and &
+ or |
+ atan2
+ hypot
+ max
+ min
+ mod
+ rem
+ xor
+
+ additionally, since the A op= B assignment operators are equivalent
+ to A = A op B, the following operators are also affected:
+
+ += -= .+= .-= .*= ./= .\= .^= .**= &= |=
+
+ See the "Broadcasting" section in the new "Vectorization and Faster
+ Code Execution" chapter of the manual for more details.
+
+ ** Octave now features a profiler, thanks to the work of Daniel Kraft
+ under the Google Summer of Code mentorship program. The manual has
+ been updated to reflect this addition. The new user-visible
+ functions are profile, profshow, and profexplore.
+
+ ** Overhaul of statistical distribution functions
+
+ Functions now return "single" outputs for inputs of class "single".
+
+ 75% reduction in memory usage through use of logical indexing.
+
+ Random sample functions now use the same syntax as rand and accept
+ a comma separated list of dimensions or a dimension vector.
+
+ Functions have been made Matlab-compatible with regard to special
+ cases (probability on boundaries, probabilities for values outside
+ distribution, etc.). This may cause subtle changes to existing
+ scripts.
+
+ negative binomial function has been extended to real, non-integer
+ inputs. The discrete_inv function now returns v(1) for 0 instead of
+ NaN. The nbincdf function has been recoded to use a closed form
+ solution with betainc.
+
+ ** strread, textscan, and textread have been completely revamped.
+
+ They now support nearly all Matlab functionality including:
+
+ * Matlab-compatible whitespace and delimiter defaults
+
+ * Matlab-compatible options: 'whitespace', treatasempty', format
+ string repeat count, user-specified comment style, uneven-length
+ output arrays, %n and %u conversion specifiers (provisionally)
+
+ ** All .m string functions have been modified for better performance or
+ greater Matlab compatibility. Performance gains of 15X-30X have
+ been demonstrated. Operations on cell array of strings no longer pay
+ quite as high a penalty as those on 2-D character arrays.
+
+ deblank: Now requires character or cellstr input.
+
+ strtrim: Now requires character or cellstr input.
+ No longer trims nulls ("\0") from string for Matlab
+ compatibility.
+
+ strmatch: Follows documentation precisely and ignores trailing spaces
+ in pattern and in string. Note that this is documented
+ Matlab behavior but the implementation apparently does
+ not always follow it.
+
+ substr: Now possible to specify a negative LEN option which
+ extracts to within LEN of the end of the string.
+
+ strtok: Now accepts cellstr input.
+
+ base2dec, bin2dec, hex2dec:
+ Now accept cellstr inputs.
+
+ dec2base, dec2bin, dec2hex:
+ Now accept cellstr inputs.
+
+ index, rindex:
+ Now accept 2-D character array input.
+
+ strsplit: Now accepts 2-D character array input.
+
+ ** Geometry functions derived from Qhull (convhull, delaunay, voronoi)
+ have been revamped. The options passed to the underlying qhull
+ command have been changed for better results or for Matlab
+ compatibility.
+
+ convhull: Default options are "Qt" for 2D, 3D, 4D inputs
+ Default options are "Qt Qx" for 5D and higher
+
+ delaunay: Default options are "Qt Qbb Qc Qz" for 2D and 3D inputs
+ Default options are "Qt Qbb Qc Qx" for 4D and higher
+
+ voronoi: No default arguments
+
+ ** Date/Time functions updated. Millisecond support with FFF format
+ string now supported.
+
+ datestr: Numerical formats 21, 22, 29 changed to match Matlab.
+ Now accepts cellstr input.
+
+ ** The following warning IDs have been removed:
+
+ Octave:associativity-change
+ Octave:complex-cmp-ops
+ Octave:empty-list-elements
+ Octave:fortran-indexing
+ Octave:precedence-change
+
+ ** The warning ID Octave:string-concat has been renamed to
+ Octave:mixed-string-concat.
+
+ ** Octave now includes the following Matlab-compatible preference
+ functions:
+
+ addpref getpref ispref rmpref setpref
+
+ ** The following Matlab-compatible handle graphics functions have been
+ added:
+
+ guidata uipanel uitoolbar
+ guihandles uipushtool uiwait
+ uicontextmenu uiresume waitfor
+ uicontrol uitoggletool
+
+ The uiXXX functions above are experimental.
+
+ Except for uiwait and uiresume, the uiXXX functions are not
+ supported with the FLTK+OpenGL graphics toolkit.
+
+ The gnuplot graphics toolkit does not support any of the uiXXX
+ functions nor the waitfor function.
+
+ ** New keyword parfor (parallel for loop) is now recognized as a valid
+ keyword. Implementation, however, is still mapped to an ordinary
+ for loop.
+
+ ** Other new functions added in 3.6.0:
+
+ bicg nthargout usejava
+ is_dq_string narginchk waitbar
+ is_sq_string python zscore
+ is_function_handle register_graphics_toolkit
+ loaded_graphics_toolkits recycle
+
+ ** Deprecated functions.
+
+ The following functions were deprecated in Octave 3.2 and have been
+ removed from Octave 3.6.
+
+ create_set spcholinv splu
+ dmult spcumprod spmax
+ iscommand spcumsum spmin
+ israwcommand spdet spprod
+ lchol spdiag spqr
+ loadimage spfind spsum
+ mark_as_command sphcat spsumsq
+ mark_as_rawcommand spinv spvcat
+ spatan2 spkron str2mat
+ spchol splchol unmark_command
+ spchol2inv split unmark_rawcommand
+
+ The following functions have been deprecated in Octave 3.6 and will
+ be removed from Octave 3.10 (or whatever version is the second major
+ release after 3.6):
+
+ cut polyderiv
+ cor shell_cmd
+ corrcoef studentize
+ __error_text__ sylvester_matrix
+ error_text
+
+ ** The following functions have been modified for Matlab compatibility:
+
+ randperm
+
+Summary of important user-visible changes for version 3.4.3 (2011-10-10):
+------------------------------------------------------------------------
+
+ ** Octave 3.4.3 is a bug fixing release.
+
+Summary of important user-visible changes for version 3.4.2 (2011-06-24):
+------------------------------------------------------------------------
+
+ ** Octave 3.4.2 fixes some minor installation problems that affected
+ version 3.4.1.
+
+Summary of important user-visible changes for version 3.4.1 (2011-06-15):
+------------------------------------------------------------------------
+
+ ** Octave 3.4.1 is primarily a bug fixing release.
+
+ ** IMPORTANT note about binary incompatibility in this release:
+
+ Binary compatibility for all 3.4.x releases was originally planned,
+ but this is impossible for the 3.4.1 release due to a bug in the way
+ shared libraries were built in Octave 3.4.0. Because of this bug,
+ .oct files built for Octave 3.4.0 must be recompiled before they
+ will work with Octave 3.4.1.
+
+ Given that there would be binary incompatibilities with shared
+ libraries going from Octave 3.4.0 to 3.4.1, the following
+ incompatible changes were also made in this release:
+
+ * The Perl Compatible Regular Expression (PCRE) library is now
+ required to build Octave.
+
+ * Octave's libraries and .oct files are now installed in
+ subdirectories of $libdir instead of $libexecdir.
+
+ Any future Octave 3.4.x release versions should remain binary
+ compatible with Octave 3.4.1 as proper library versioning is now
+ being used as recommended by the libtool manual.
+
+ ** The following functions have been deprecated in Octave 3.4.1 and will
+ be removed from Octave 3.8 (or whatever version is the second major
+ release after 3.4):
+
+ cquad is_duplicate_entry perror strerror
+
+ ** The following functions are new in 3.4.1:
+
+ colstyle gmres iscolumn isrow mgorth nproc rectangle
+
+ ** The get_forge_pkg function is now private.
+
+ ** The rectangle_lw, rectangle_sw, triangle_lw, and triangle_sw
+ functions are now private.
+
+ ** The logistic_regression_derivatives and logistic_regression_likelihood
+ functions are now private.
+
+ ** ChangeLog files in the Octave sources are no longer maintained
+ by hand. Instead, there is a single ChangeLog file generated from
+ the Mercurial version control commit messages. Older ChangeLog
+ information can be found in the etc/OLD-ChangeLogs directory in the
+ source distribution.
+
+Summary of important user-visible changes for version 3.4 (2011-02-08):
+----------------------------------------------------------------------
+
+ ** BLAS and LAPACK libraries are now required to build Octave. The
+ subset of the reference BLAS and LAPACK libraries has been removed
+ from the Octave sources.
+
+ ** The ARPACK library is now distributed with Octave so it no longer
+ needs to be available as an external dependency when building
+ Octave.
+
+ ** The `lookup' function was extended to be more useful for
+ general-purpose binary searching. Using this improvement, the
+ ismember function was rewritten for significantly better
+ performance.
+
+ ** Real, integer and logical matrices, when used in indexing, will now
+ cache the internal index_vector value (zero-based indices) when
+ successfully used as indices, eliminating the conversion penalty for
+ subsequent indexing by the same matrix. In particular, this means it
+ is no longer needed to avoid repeated indexing by logical arrays
+ using find for performance reasons.
+
+ ** Logical matrices are now treated more efficiently when used as
+ indices. Octave will keep the index as a logical mask unless the
+ ratio of true elements is small enough, using a specialized
+ code. Previously, all logical matrices were always first converted
+ to index vectors. This results in savings in both memory and
+ computing time.
+
+ ** The `sub2ind' and `ind2sub' functions were reimplemented as compiled
+ functions for better performance. These functions are now faster,
+ can deliver more economized results for ranges, and can reuse the
+ index cache mechanism described in previous paragraph.
+
+ ** The built-in function equivalents to associative operators (`plus',
+ `times', `mtimes', `and', and `or') have been extended to accept
+ multiple arguments. This is especially useful for summing
+ (multiplying, etc.) lists of objects (of possibly distinct types):
+
+ matrix_sum = plus (matrix_list{:});
+
+ ** An FTP object type based on libcurl has been implemented. These
+ objects allow ftp connections, downloads and uploads to be
+ managed. For example,
+
+ fp = ftp ("ftp.octave.org);
+ cd (fp, "gnu/octave");
+ mget (fp, "octave-3.2.3.tar.bz2");
+ close (fp);
+
+ ** The default behavior of `assert (observed, expected)' has been
+ relaxed to employ less strict checking that does not require the
+ internals of the values to match. This avoids previously valid
+ tests from breaking due to new internal classes introduced in future
+ Octave versions.
+
+ For instance, all of these assertions were true in Octave 3.0.x
+ but false in 3.2.x due to new optimizations and improvements:
+
+ assert (2*linspace (1, 5, 5), 2*(1:5))
+ assert (zeros (0, 0), [])
+ assert (2*ones (1, 5), (2) (ones (1,5)))
+
+ ** The behavior of library functions `ismatrix', `issquare', and
+ `issymmetric' has been changed for better consistency.
+
+ * The `ismatrix' function now returns true for all numeric,
+ logical and character 2-D or N-D matrices. Previously, `ismatrix'
+ returned false if the first or second dimension was zero.
+ Hence, `ismatrix ([])' was false,
+ while `ismatrix (zeros (1,2,0))' was true.
+
+ * The `issquare' function now returns a logical scalar, and is
+ equivalent to the expression
+
+ ismatrix (x) && ndims (x) == 2 && rows (x) == columns (x)
+
+ The dimension is no longer returned. As a result, `issquare ([])'
+ now yields true.
+
+ * The `issymmetric' function now checks for symmetry instead of
+ Hermitianness. For the latter, ishermitian was created. Also,
+ logical scalar is returned rather than the dimension, so
+ `issymmetric ([])' is now true.
+
+ ** Function handles are now aware of overloaded functions. If a
+ function is overloaded, the handle determines at the time of its
+ reference which function to call. A non-overloaded version does not
+ need to exist.
+
+ ** Overloading functions for built-in classes (double, int8, cell,
+ etc.) is now compatible with Matlab.
+
+ ** Function handles can now be compared with the == and != operators,
+ as well as the `isequal' function.
+
+ ** Performance of concatenation (using []) and the functions `cat',
+ `horzcat', and `vertcat' has been improved for multidimensional
+ arrays.
+
+ ** The operation-assignment operators +=, -=, *= and /= now behave more
+ efficiently in certain cases. For instance, if M is a matrix and S a
+ scalar, then the statement
+
+ M += S;
+
+ will operate on M's data in-place if it is not shared by another
+ variable, usually increasing both time and memory efficiency.
+
+ Only selected common combinations are affected, namely:
+
+ matrix += matrix
+ matrix -= matrix
+ matrix .*= matrix
+ matrix ./= matrix
+
+ matrix += scalar
+ matrix -= scalar
+ matrix *= scalar
+ matrix /= scalar
+
+ logical matrix |= logical matrix
+ logical matrix &= logical matrix
+
+ where matrix and scalar belong to the same class. The left-hand
+ side must be a simple variable reference.
+
+ Moreover, when unary operators occur in expressions, Octave will
+ also try to do the operation in-place if it's argument is a
+ temporary expression.
+
+ ** The effect of comparison operators (<, >, <=, and >=) applied to
+ complex numbers has changed to be consistent with the strict
+ ordering defined by the `max', `min', and `sort' functions. More
+ specifically, complex numbers are compared by lexicographical
+ comparison of the pairs `[abs(z), arg(z)]'. Previously, only real
+ parts were compared; this can be trivially achieved by converting
+ the operands to real values with the `real' function.
+
+ ** The automatic simplification of complex computation results has
+ changed. Octave will now simplify any complex number with a zero
+ imaginary part or any complex matrix with all elements having zero
+ imaginary part to a real value. Previously, this was done only for
+ positive zeros. Note that the behavior of the complex function is
+ unchanged and it still produces a complex value even if the
+ imaginary part is zero.
+
+ ** As a side effect of code refactoring in liboctave, the binary
+ logical operations are now more easily amenable to compiler
+ optimizations and are thus significantly faster.
+
+ ** Octave now allows user-defined `subsasgn' methods to optimize out
+ redundant copies. For more information, see the manual.
+
+ ** More efficient matrix division handling. Octave is now able to
+ handle the expressions
+
+ M' \ V
+ M.' \ V
+ V / M
+
+ (M is a matrix and V is a vector) more efficiently in certain cases.
+ In particular, if M is triangular, all three expressions will be
+ handled by a single call to xTRTRS (from LAPACK), with appropriate
+ flags. Previously, all three expressions required a physical
+ transpose of M.
+
+ ** More efficient handling of certain mixed real-complex matrix
+ operations. For instance, if RM is a real matrix and CM a complex
+ matrix,
+
+ RM * CM
+
+ can now be evaluated either as
+
+ complex (RM * real (CM), RM * imag (CM))
+
+ or as
+
+ complex (RM) * CM,
+
+ depending on the dimensions. The first form requires more
+ temporaries and copying, but halves the FLOP count, which normally
+ brings better performance if RM has enough rows. Previously, the
+ second form was always used.
+
+ Matrix division is similarly affected.
+
+ ** More efficient handling of triangular matrix factors returned from
+ factorizations. The functions for computing QR, LU and Cholesky
+ factorizations will now automatically return the triangular matrix
+ factors with proper internal matrix_type set, so that it won't need
+ to be computed when the matrix is used for division.
+
+ ** The built-in `sum' function now handles the non-native summation
+ (i.e., double precision sum of single or integer inputs) more
+ efficiently, avoiding a temporary conversion of the whole input
+ array to doubles. Further, `sum' can now accept an extra option
+ argument, using a compensated summation algorithm rather than a
+ straightforward sum, which significantly improves precision if lots
+ of cancellation occurs in the summation.
+
+ ** The built-in `bsxfun' function now uses optimized code for certain
+ cases where built-in operator handles are passed in. Namely, the
+ optimizations concern the operators `plus', `minus', `times',
+ `ldivide', `rdivide', `power', `and', `or' (for logical arrays),
+ the relational operators `eq', `ne', `lt', `le', `gt', `ge', and the
+ functions `min' and `max'. Optimizations only apply when both
+ operands are of the same built-in class. Mixed real/complex and
+ single/double operations will first convert both operands to a
+ common type.
+
+ ** The `strfind' and `strrep' functions now have compiled
+ implementations, facilitating significantly more efficient searching
+ and replacing in strings, especially with longer patterns. The code
+ of `strcat' has been vectorized and is now much more efficient when
+ many strings are concatenated. The `strcmpi' and `strncmpi'
+ functions are now built-in functions, providing better performance.
+
+ ** 'str2double' now has a compiled implementation and the API conforms
+ to Matlab. The additional Octave-specific features of returning a
+ boolean matrix indicating which elements were successfully converted
+ has been removed.
+
+ ** Matlab-style ignoring input and output function arguments using
+ tilde (~) is now supported. Ignored output arguments may be
+ detected from a function using the built-in function `isargout'.
+ For more details, consult the manual.
+
+ ** The list datatype, deprecated since the introduction of cells, has
+ been removed.
+
+ ** The accumarray function has been optimized and is now significantly
+ faster in certain important cases.
+
+ ** The behavior of isreal and isnumeric functions was changed to be more
+ Matlab-compatible.
+
+ ** The integer math & conversion warnings (Octave:int-convert-nan,
+ Octave:int-convert-non-int-val, Octave:int-convert-overflow,
+ Octave:int-math-overflow) have been removed.
+
+ ** rem and mod are now built-in functions. They also handle integer
+ types efficiently using integer arithmetic.
+
+ ** Sparse indexing and indexed assignment has been mostly rewritten.
+ Since Octave uses compressed column storage for sparse matrices,
+ major attention is devoted to operations manipulating whole columns.
+ Such operations are now significantly faster, as well as some other
+ important cases.
+
+ Further, it is now possible to pre-allocate a sparse matrix and
+ subsequently fill it by assignments, provided they meet certain
+ conditions. For more information, consult the `spalloc' function,
+ which is no longer a mere dummy. Consequently, nzmax and nnz are no
+ longer always equal in Octave. Octave may also produce a matrix
+ with nnz < nzmax as a result of other operations, so you should
+ consistently use nnz unless you really want to use nzmax (i.e., the
+ space allocated for nonzero elements).
+
+ Sparse concatenation is also affected, and concatenating sparse
+ matrices, especially larger collections, is now significantly more
+ efficient. This applies to both the [] operator and the
+ cat/vertcat/horzcat functions.
+
+ ** It is now possible to optionally employ the xGESDD LAPACK drivers
+ for computing the singular value decomposition using svd, instead
+ of the default xGESVD, using the configuration pseudo-variable
+ svd_driver. The xGESDD driver can be up to 6x times faster when
+ singular vectors are requested, but is reported to be somewhat less
+ robust on highly ill-conditioned matrices.
+
+ ** Configuration pseudo-variables, such as page_screen_output or
+ confirm_recursive_rmdir (or the above mentioned svd_driver), now
+ accept a "local" option as second argument, requesting the change
+ to be undone when the current function returns:
+
+ function [status, msg] = rm_rf (dir)
+ confirm_recursive_rmdir (false, "local");
+ [status, msg] = rmdir (dir, "s");
+ ...
+ endfunction
+
+ Upon return, confirm_recursive_rmdir will be restored to the value
+ it had on entry to the function, even if there were subsequent
+ changes to the variable in function rm_rf or any of the functions
+ it calls.
+
+ ** pkg now accepts a -forge option for downloading and installing
+ packages from Octave Forge automatically. For example,
+
+ pkg install -forge general
+
+ will automatically download the latest release of the general
+ package and attempt to install it. No automatic resolving of
+ dependencies is provided. Further,
+
+ pkg list -forge
+
+ can be used to list all available packages.
+
+ ** The internal data representation of structs has been completely
+ rewritten to make certain optimizations feasible. The field data
+ can now be shared between structs with equal keys but different
+ dimensions or values, making operations that preserve the fields
+ faster. Economized storage is now used for scalar structs (just
+ like most other scalars), making their usage more
+ memory-efficient. Certain array-like operations on structs
+ (concatenation, uniform cellfun, num2cell) have gained a
+ significant speed-up. Additionally, the octave_scalar_map class
+ now provides a simpler interface to work with scalar structs within
+ a C++ DLD function.
+
+ ** Two new formats are available for displaying numbers:
+
+ format short eng
+ format long eng
+
+ Both display numbers in engineering notation, i.e., mantissa +
+ exponent where the exponent is a multiple of 3.
+
+ ** The following functions are new in Octave 3.4:
+ accumdim erfcx nfields pqpnonneg uigetdir
+ bitpack fileread nth_element quadcc uigetfile
+ bitunpack fminbnd onCleanup randi uiputfile
+ blkmm fskipl pbaspect repelems uimenu
+ cbrt ifelse pie3 reset whitebg
+ curl ishermitian powerset rsf2csf
+ chop isindex ppder saveas
+ daspect luupdate ppint strread
+ divergence merge ppjumps textread
+
+ ** Using the image function to view images with external programs such
+ as display, xv, and xloadimage is no longer supported. The
+ image_viewer function has also been removed.
+
+ ** The behavior of struct assignments to non-struct values has been
+ changed. Previously, it was possible to overwrite an arbitrary
+ value:
+
+ a = 1;
+ a.x = 2;
+
+ This is no longer possible unless a is an empty matrix or cell
+ array.
+
+ ** The dlmread function has been extended to allow specifying a custom
+ value for empty fields.
+
+ ** The dlmread and dlmwrite functions have been modified to accept
+ file IDs (as returned by fopen) in addition to file names.
+
+ ** Octave can now optimize away the interpreter overhead of an
+ anonymous function handle, if the function simply calls another
+ function or handle with some of its parameters bound to certain
+ values. Example:
+
+ f = @(x) sum (x, 1);
+
+ When f is called, the call is forwarded to @sum with the constant 1
+ appended, and the anonymous function call does not occur on the
+ call stack.
+
+ ** For compatibility with Matlab, mu2lin (x) is now equivalent to
+ mu2lin (x, 0).
+
+ ** The new function `history_control' may be used to control the way
+ command lines are added to the history list when Octave is using
+ readline for command-line editing. For example
+
+ history_control ("ignoredups")
+
+ tells Octave to avoid adding duplicate lines to the history list.
+
+ ** Octave now uses the gnulib library for improved portability and to
+ avoid bugs in operating system functions.
+
+ ** Deprecated functions.
+
+ The following functions were deprecated in Octave 3.0 and have been
+ removed from Octave 3.4.
+
+ beta_cdf geometric_pdf pascal_pdf
+ beta_inv geometric_rnd pascal_rnd
+ beta_pdf hypergeometric_cdf poisson_cdf
+ beta_rnd hypergeometric_inv poisson_inv
+ binomial_cdf hypergeometric_pdf poisson_pdf
+ binomial_inv hypergeometric_rnd poisson_rnd
+ binomial_pdf intersection polyinteg
+ binomial_rnd is_bool setstr
+ chisquare_cdf is_complex struct_contains
+ chisquare_inv is_list struct_elements
+ chisquare_pdf is_matrix t_cdf
+ chisquare_rnd is_scalar t_inv
+ clearplot is_square t_pdf
+ clg is_stream t_rnd
+ com2str is_struct uniform_cdf
+ exponential_cdf is_symmetric uniform_inv
+ exponential_inv is_vector uniform_pdf
+ exponential_pdf isstr uniform_rnd
+ exponential_rnd lognormal_cdf weibcdf
+ f_cdf lognormal_inv weibinv
+ f_inv lognormal_pdf weibpdf
+ f_pdf lognormal_rnd weibrnd
+ f_rnd meshdom weibull_cdf
+ gamma_cdf normal_cdf weibull_inv
+ gamma_inv normal_inv weibull_pdf
+ gamma_pdf normal_pdf weibull_rnd
+ gamma_rnd normal_rnd wiener_rnd
+ geometric_cdf pascal_cdf
+ geometric_inv pascal_inv
+
+ The following functions were deprecated in Octave 3.2 and will
+ be removed from Octave 3.6 (or whatever version is the second major
+ release after 3.2):
+
+ create_set spcholinv splu
+ dmult spcumprod spmax
+ iscommand spcumsum spmin
+ israwcommand spdet spprod
+ lchol spdiag spqr
+ loadimage spfind spsum
+ mark_as_command sphcat spsumsq
+ mark_as_rawcommand spinv spvcat
+ spatan2 spkron str2mat
+ spchol splchol unmark_command
+ spchol2inv split unmark_rawcommand
+
+ The following functions have been deprecated in Octave 3.4 and will
+ be removed from Octave 3.8 (or whatever version is the second major
+ release after 3.4):
+
+ autocor cellidx gammai is_global replot values
+ autocov dispatch glpkmex krylovb saveimage
+ betai fstat intwarning perror strerror
+
+Summary of important user-visible changes for version 3.2 (2009-06-05):
+----------------------------------------------------------------------
+
+ ** Compatibility with Matlab graphics has been improved.
+
+ The hggroup object and associated listener callback functions have
+ been added allowing the inclusion of group objects. Data sources
+ have been added to these group objects such that
+
+ x = 0:0.1:10;
+ y = sin (x);
+ plot (x, y, "ydatasource", "y");
+ for i = 1 : 100
+ pause(0.1)
+ y = sin (x + 0.1 * i);
+ refreshdata ();
+ endfor
+
+ works as expected. This capability has be used to introduce
+ stem-series, bar-series, etc., objects for better Matlab
+ compatibility.
+
+ ** New graphics functions:
+
+ addlistener ezcontour gcbo refresh
+ addproperty ezcontourf ginput refreshdata
+ allchild ezmesh gtext specular
+ available_graphics_toolkits ezmeshc intwarning surfl
+ graphics_toolkit ezplot ishghandle trisurf
+ cla ezplot3 isocolors waitforbuttonpress
+ clabel ezpolar isonormals
+ comet ezsurf isosurface
+ dellistener findall linkprop
+ diffuse gcbf plotmatrix
+
+ ** New experimental OpenGL/FLTK based plotting system.
+
+ An experimental plotting system based on OpenGL and the FLTK
+ toolkit is now part of Octave. This graphics toolkit is disabled by
+ default. You can switch to using it with the command
+
+ graphics_toolkit ("fltk")
+
+ for all future figures or for a particular figure with the command
+
+ graphics_toolkit (h, "fltk")
+
+ where "h" is a valid figure handle.
+
+ ** Functions providing direct access to gnuplot have been removed.
+
+ The functions __gnuplot_plot__, __gnuplot_set__, __gnuplot_raw__,
+ __gnuplot_show__, __gnuplot_replot__, __gnuplot_splot__,
+ __gnuplot_save_data__ and __gnuplot_send_inline_data__ have been
+ removed from Octave. These function were incompatible with the
+ high level graphics handle code.
+
+ ** The Control, Finance and Quaternion functions have been removed.
+
+ These functions are now available as separate packages from
+
+ http://octave.sourceforge.net/packages.html
+
+ and can be reinstalled using the Octave package manager (see
+ the pkg function).
+
+ ** Specific sparse matrix functions removed.
+
+ The following functions, which handled only sparse matrices have
+ been removed. Instead of calling these functions directly, you
+ should use the corresponding function without the "sp" prefix.
+
+ spatan2 spcumsum spkron spprod
+ spchol spdet splchol spqr
+ spchol2inv spdiag splu spsum
+ spcholinv spfind spmax spsumsqk
+ spcumprod spinv spmin
+
+ ** Improvements to the debugger.
+
+ The interactive debugging features have been improved. Stopping
+ on statements with dbstop should work correctly now. Stepping
+ into and over functions, and stepping one statement at a time
+ (with dbstep) now works. Moving up and down the call stack with
+ dbup and dbdown now works. The dbstack function is now available
+ to print the current function call stack. The new dbquit function
+ is available to exit the debugging mode.
+
+ ** Improved traceback error messages.
+
+ Traceback error messages are much more concise and easier to
+ understand. They now display information about the function call
+ stack instead of the stack of all statements that were active at
+ the point of the error.
+
+ ** Object Oriented Programming.
+
+ Octave now includes OOP features and the user can create their own
+ class objects and overloaded functions and operators. For
+ example, all methods of a class called "myclass" will be found in
+ a directory "@myclass" on the users path. The class specific
+ versions of functions and operators take precedence over the
+ generic versions of these functions.
+
+ New functions related to OOP include
+
+ class inferiorto isobject loadobj methods superiorto
+
+ See the Octave manual for more details.
+
+ ** Parsing of Command-style Functions.
+
+ Octave now parses command-style functions without needing to first
+ declare them with "mark_as_command". The rules for recognizing a
+ command-style function calls are
+
+ * A command must appear as the first word in a statement,
+ followed by a space.
+
+ * The first character after the space must not be '=' or '('
+
+ * The next token after the space must not look like a binary
+ operator.
+
+ These rules should be mostly compatible with the way Matlab parses
+ command-style function calls and allow users to define commands in
+ .m files without having to mark them as commands.
+
+ Note that previous versions of Octave allowed expressions like
+
+ x = load -text foo.dat
+
+ but an expression like this will now generate a parse error. In
+ order to assign the value returned by a function to a variable,
+ you must use the normal function call syntax:
+
+ x = load ("-text", "foo.dat");
+
+ ** Block comments.
+
+ Commented code can be between matching "#{" and "#}" or "%{" and
+ "%}" markers, even if the commented code spans several line. This
+ allows blocks code to be commented, without needing to comment
+ each line. For example,
+
+ function [s, t] = func (x, y)
+ s = 2 * x;
+ #{
+ s *= y;
+ t = y + x;
+ #}
+ endfunction
+
+ the lines "s *= y;" and "t = y + x" will not be executed.
+
+ ** If any subfunction in a file ends with "end" or "endfunction", then
+ they all must end that way. Previously, Octave accepted
+
+ function main ()
+ ...
+ # no endfunction here.
+ function sub ()
+ ...
+ endfunction
+
+ but this is no longer allowed.
+
+ ** Special treatment in the parser of expressions like "a' * b".
+
+ In these cases the transpose is no longer explicitly formed and
+ BLAS libraries are called with the transpose flagged,
+ significantly improving performance for these kinds of
+ operations.
+
+ ** Single Precision data type.
+
+ Octave now includes a single precision data type. Single
+ precision variables can be created with the "single" command, or
+ from functions like ones, eye, etc. For example,
+
+ single (1)
+ ones (2, 2, "single")
+ zeros (2, 2, "single")
+ eye (2, 2, "single")
+ Inf (2, 2, "single")
+ NaN (2, 2, "single")
+ NA (2, 2, "single")
+
+ all create single precision variables. For compatibility with
+ Matlab, mixed double/single precision operators and functions
+ return single precision types.
+
+ As a consequence of this addition to Octave the internal
+ representation of the double precision NA value has changed, and
+ so users that make use of data generated by Octave with R or
+ visa-versa are warned that compatibility might not be assured.
+
+ ** Improved array indexing.
+
+ The underlying code used for indexing of arrays has been
+ completely rewritten and indexing is now significantly faster.
+
+ ** Improved memory management.
+
+ Octave will now attempt to share data in some cases where previously
+ a copy would be made, such as certain array slicing operations or
+ conversions between cells, structs and cs-lists. This usually reduces
+ both time and memory consumption.
+ Also, Octave will now attempt to detect and optimize usage of a vector
+ as a stack, when elements are being repeatedly inserted at/removed from
+ the end of the vector.
+
+ ** Improved performance for reduction operations.
+
+ The performance of the sum, prod, sumsq, cumsum, cumprod, any, all,
+ max and min functions has been significantly improved.
+
+ ** Sorting and searching.
+
+ The performance of sort has been improved, especially when sorting
+ indices are requested. An efficient built-in issorted
+ implementation was added. The sortrows function now uses a more
+ efficient algorithm, especially in the homogeneous case. The lookup
+ function is now a built-in function performing a binary search,
+ optimized for long runs of close elements. Lookup also works with
+ cell arrays of strings.
+
+ ** Range arithmetics
+
+ For some operations on ranges, Octave will attempt to keep the
+ result as a range. These include negation, adding a scalar,
+ subtracting a scalar, and multiplying by a scalar. Ranges with zero
+ increment are allowed and can be constructed using the built-in
+ function `ones'.
+
+ ** Various performance improvements.
+
+ Performance of a number of other built-in operations and functions
+ was improved, including:
+
+ * logical operations
+ * comparison operators
+ * element-wise power
+ * accumarray
+ * cellfun
+ * isnan
+ * isinf
+ * isfinite
+ * nchoosek
+ * repmat
+ * strcmp
+
+ ** 64-bit integer arithmetic.
+
+ Arithmetic with 64-bit integers (int64 and uint64 types) is fully
+ supported, with saturation semantics like the other integer types.
+ Performance of most integer arithmetic operations has been
+ improved by using integer arithmetic directly. Previously, Octave
+ performed integer math with saturation semantics by converting the
+ operands to double precision, performing the operation, and then
+ converting the result back to an integer value, truncating if
+ necessary.
+
+ ** Diagonal and permutation matrices.
+
+ The interpreter can now treat diagonal and permutation matrices as
+ special objects that store only the non-zero elements, rather than
+ general full matrices. Therefore, it is now possible to construct
+ and use these matrices in linear algebra without suffering a
+ performance penalty due to storing large numbers of zero elements.
+
+ ** Improvements to fsolve.
+
+ The fsolve function now accepts an option structure argument (see
+ also the optimset function). The INFO values returned from fsolve
+ have changed to be compatible with Matlab's fsolve function.
+ Additionally, fsolve is now able to solve overdetermined systems,
+ complex-differentiable complex systems, systems with a sparse
+ jacobian and can work in single precision if given single precision
+ inputs. It can also be called recursively.
+
+ ** Improvements to the norm function.
+
+ The norm function is now able to compute row or column norms of a
+ matrix in a single call, as well as general matrix p-norms.
+
+ ** New functions for computing some eigenvalues or singular values.
+
+ The eigs and svds functions have been included in Octave. These
+ functions require the ARPACK library (now distributed under a
+ GPL-compatible license).
+
+ ** New QR and Cholesky factorization updating functions.
+
+ choldelete cholshift qrdelete qrshift
+ cholinsert cholupdate qrinsert qrupdate
+
+ ** New quadrature functions.
+
+ dblquad quadgk quadv triplequad
+
+ ** New functions for reading and writing images.
+
+ The imwrite and imread functions have been included in Octave.
+ These functions require the GraphicsMagick library. The new
+ function imfinfo provides information about an image file (size,
+ type, colors, etc.)
+
+ ** The input_event_hook function has been replaced by the pair of
+ functions add_input_event_hook and remove_input_event_hook so that
+ more than one hook function may be installed at a time.
+
+ ** Other miscellaneous new functions.
+
+ addtodate hypot reallog
+ bicgstab idivide realpow
+ cellslices info realsqrt
+ cgs interp1q rectint
+ command_line_path isdebugmode regexptranslate
+ contrast isfloat restoredefaultpath
+ convn isstrprop roundb
+ cummin log1p rundemos
+ cummax lsqnonneg runlength
+ datetick matlabroot saveobj
+ display namelengthmax spaugment
+ expm1 nargoutchk strchr
+ filemarker pathdef strvcat
+ fstat perl subspace
+ full prctile symvar
+ fzero quantile treelayout
+ genvarname re_read_readline_init_file validatestring
+ histc
+
+ ** Changes to strcat.
+
+ The strcat function is now compatible with Matlab's strcat
+ function, which removes trailing whitespace when concatenating
+ character strings. For example
+
+ strcat ('foo ', 'bar')
+ ==> 'foobar'
+
+ The new function cstrcat provides the previous behavior of
+ Octave's strcat.
+
+ ** Improvements to the help functions.
+
+ The help system has been mostly re-implemented in .m files to make
+ it easier to modify. Performance of the lookfor function has been
+ greatly improved by caching the help text from all functions that
+ are distributed with Octave. The pkg function has been modified
+ to generate cache files for external packages when they are
+ installed.
+
+ ** Deprecated functions.
+
+ The following functions were deprecated in Octave 3.0 and will be
+ removed from Octave 3.4 (or whatever version is the second major
+ release after 3.0):
+
+ beta_cdf geometric_pdf pascal_pdf
+ beta_inv geometric_rnd pascal_rnd
+ beta_pdf hypergeometric_cdf poisson_cdf
+ beta_rnd hypergeometric_inv poisson_inv
+ binomial_cdf hypergeometric_pdf poisson_pdf
+ binomial_inv hypergeometric_rnd poisson_rnd
+ binomial_pdf intersection polyinteg
+ binomial_rnd is_bool setstr
+ chisquare_cdf is_complex struct_contains
+ chisquare_inv is_list struct_elements
+ chisquare_pdf is_matrix t_cdf
+ chisquare_rnd is_scalar t_inv
+ clearplot is_square t_pdf
+ clg is_stream t_rnd
+ com2str is_struct uniform_cdf
+ exponential_cdf is_symmetric uniform_inv
+ exponential_inv is_vector uniform_pdf
+ exponential_pdf isstr uniform_rnd
+ exponential_rnd lognormal_cdf weibcdf
+ f_cdf lognormal_inv weibinv
+ f_inv lognormal_pdf weibpdf
+ f_pdf lognormal_rnd weibrnd
+ f_rnd meshdom weibull_cdf
+ gamma_cdf normal_cdf weibull_inv
+ gamma_inv normal_inv weibull_pdf
+ gamma_pdf normal_pdf weibull_rnd
+ gamma_rnd normal_rnd wiener_rnd
+ geometric_cdf pascal_cdf
+ geometric_inv pascal_inv
+
+ The following functions are now deprecated in Octave 3.2 and will
+ be removed from Octave 3.6 (or whatever version is the second major
+ release after 3.2):
+
+ create_set spcholinv spmax
+ dmult spcumprod spmin
+ iscommand spcumsum spprod
+ israwcommand spdet spqr
+ lchol spdiag spsum
+ loadimage spfind spsumsq
+ mark_as_command spinv str2mat
+ mark_as_rawcommand spkron unmark_command
+ spatan2 splchol unmark_rawcommand
+ spchol split
+ spchol2inv splu
+
+Summary of important user-visible changes for version 3.0 (2007-12-21):
+----------------------------------------------------------------------
+
+ ** Compatibility with Matlab graphics is much better now. We now
+ have some graphics features that work like Matlab's Handle
+ Graphics (tm):
+
+ + You can make a subplot and then use the print function to
+ generate a file with the plot.
+
+ + RGB line colors are supported if you use gnuplot 4.2. Octave
+ can still use gnuplot 4.0, but there is no way to set arbitrary
+ line colors with it when using the Matlab-style plot functions.
+ There never was any way to do this reliably with older versions
+ of gnuplot (whether run from Octave or not) since it only
+ provided a limited set to choose from, and they were terminal
+ dependent, so choosing color 1 with the X11 terminal would be
+ different from color 1 with the PostScript terminal. Valid RGB
+ colors for gnuplot 4.0 are the eight possible combinations of 0
+ and 1 for the R, G and B values. Invalid values are all mapped
+ to the same color.
+
+ This also affects patch objects used in the bar, contour, meshc
+ and surfc functions, where the bars and contours will be
+ monochrome. A workaround for this is to type "colormap gmap40"
+ that loads a colormap that in many cases will be adequate for
+ simple bar and contour plots.
+
+ + You can control the width of lines using (for example):
+
+ line (x, y, "linewidth", 4, "color", [1, 0, 0.5]);
+
+ (this also shows the color feature).
+
+ + With gnuplot 4.2, image data is plotted with gnuplot and may be
+ combined with other 2-d plot data.
+
+ + Lines for contour plots are generated with an Octave function, so
+ contour plots are now 2-d plots instead of special 3-d plots, and
+ this allows you to plot additional 2-d data on top of a contour
+ plot.
+
+ + With the gnuplot "extended" terminals the TeX interpreter is
+ emulated. However, this means that the TeX interpreter is only
+ supported on the postscript terminals with gnuplot 4.0. Under
+ gnuplot 4.2 the terminals aqua, dumb, png, jpeg, gif, pm, windows,
+ wxt, svg and x11 are supported as well.
+
+ + The following plot commands are now considered obsolete and will
+ be removed from a future version of Octave:
+
+ __gnuplot_set__
+ __gnuplot_show__
+ __gnuplot_plot__
+ __gnuplot_splot__
+ __gnuplot_replot__
+
+ Additionally, these functions no longer have any effect on plots
+ created with the Matlab-style plot commands (plot, line, mesh,
+ semilogx, etc.).
+
+ + Plot property values are not extensively checked. Specifying
+ invalid property values may produce unpredictable results.
+
+ + Octave now sends data over the same pipe that is used to send
+ commands to gnuplot. While this avoids the problem of
+ cluttering /tmp with data files, it is no longer possible to use
+ the mouse to zoom in on plots. This is a limitation of gnuplot,
+ which is unable to zoom when the data it plots is not stored in
+ a file. Some work has been done to fix this problem in newer
+ versions of gnuplot (> 4.2.2). See for example, this thread
+
+ http://www.nabble.com/zooming-of-inline-data-tf4357017.html#a12416496
+
+ on the gnuplot development list.
+
+
+ ** The way Octave handles search paths has changed. Instead of
+ setting the built-in variable LOADPATH, you must use addpath,
+ rmpath, or path to manipulate the function search path. These
+ functions will maintain "." at the head of the path, for
+ compatibility with Matlab.
+
+ Leading, trailing or doubled colons are no longer special.
+ Now, all elements of the search path are explicitly included in
+ the path when Octave starts. To display the path, use the path
+ function.
+
+ Path elements that end in // are no longer searched recursively.
+ Instead, you may use addpath and the genpath function to add an
+ entire directory tree to the path. For example,
+
+ addpath (genpath ("~/octave"));
+
+ will add ~/octave and all directories below it to the head of the
+ path.
+
+
+ ** Previous versions of Octave had a number of built-in variables to
+ control warnings (for example, warn_divide_by_zero). These
+ variables have been replaced by warning identifiers that are used
+ with the warning function to control the state of warnings.
+
+ For example, instead of writing
+
+ warn_divide_by_zero = false;
+
+ to disable divide-by-zero warnings, you should write
+
+ warning ("off", "Octave:divide-by-zero");
+
+ You may use the same technique in your own code to control
+ warnings. For example, you can use
+
+ warning ("My-package:phase-of-the-moon",
+ "the phase of the moon could cause trouble today");
+
+ to allow users to control this warning using the
+ "My-package:phase-of-the-moon" warning identifier.
+
+ You may also enable or disable all warnings, or turn them into
+ errors:
+
+ warning ("on", "all");
+ warning ("off", "all");
+ warning ("error", "Octave:divide-by-zero");
+ warning ("error", "all");
+
+ You can query the state of current warnings using
+
+ warning ("query", ID)
+ warning ("query")
+
+ (only those warning IDs which have been explicitly set are
+ returned).
+
+ A partial list and description of warning identifiers is available
+ using
+
+ help warning_ids
+
+
+ ** All built-in variables have been converted to functions. This
+ change simplifies the interpreter and allows a consistent
+ interface to internal variables for user-defined packages and the
+ core functions distributed with Octave. In most cases, code that
+ simply accesses internal variables does not need to change. Code
+ that sets internal variables will change. For example, instead of
+ writing
+
+ PS1 = ">> ";
+
+ you will need to write
+
+ PS1 (">> ");
+
+ If you need write code that will run in both old and new versions
+ of Octave, you can use something like
+
+ if (exist ("OCTAVE_VERSION") == 5)
+ ## New:
+ PS1 (">> ");
+ else
+ ## Old:
+ PS1 = ">> ";
+ endif
+
+
+ ** For compatibility with Matlab, the output order of Octave's
+ "system" function has changed from
+
+ [output, status] = system (cmd);
+
+ to
+
+ [status, output] = system (cmd);
+
+
+ ** For compatibility with Matlab, the output of Octave's fsolve
+ function has been changed from
+
+ [x, info, msg] = fsolve (...);
+
+ to
+
+ [x, fval, info] = fsolve (...);
+
+
+ ** For compatibility with Matlab, normcdf, norminv, normpdf, and
+ normrnd have been modified to compute distributions using the
+ standard deviation instead of the variance.
+
+
+ ** For compatibility with Matlab, gamcdf, gaminv, gampdf, gamrnd,
+ expcdf, expinv, exppdf and exprnd have been modified to compute
+ the distributions using the standard scale factor rather than
+ one over the scale factor.
+
+---------------------------------------------------------
+
+See NEWS.2 for old news.
diff -r 7ecd07721cca -r 86ddba86efbe etc/NEWS.4
--- a/etc/NEWS.4 Tue Dec 07 16:20:15 2021 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1350 +0,0 @@
-Summary of important user-visible changes for version 4.4 (2018-04-30):
-----------------------------------------------------------------------
-
- ** A graphical Variable Editor has been added to the GUI interface.
- It uses a spreadsheet-like interface for quick, intuitive editing
- of variables. The Variable Editor is launched by double-clicking
- on a variable name in the Workspace Window or by typing
- "openvar VARIABLE_NAME" in the Command Window.
-
- ** On systems with 64-bit pointers, --enable-64 is now the default and
- Octave always uses 64-bit indexing. However, if the configure
- script determines that the BLAS library uses 32-bit integers, then
- operations using the following libraries are limited to arrays with
- dimensions that are smaller than 2^31 elements:
-
- BLAS LAPACK QRUPDATE SuiteSparse ARPACK
-
- Additionally, the following libraries use "int" internally, so
- maximum problem sizes are always limited:
-
- glpk Qhull
-
- ** The octave command no longer starts the GUI by default. Most users
- starting Octave from a shell were expecting the command line
- interface, and desktop launchers already required the `--force-gui'
- option. With this change, desktop launchers should be modified to
- use the new option `--gui'. The previous `--force-gui' option will
- continue to work, and maps to `--gui', but it will be removed in
- Octave 6.
-
- ** A known bug in Qt (https://bugreports.qt.io/browse/QTBUG-55357) is
- addressed by limiting GUI sub-panel relocation capabilities for Qt
- versions in the range >= 5.6.1 and < 5.7.1. However, this may not
- thoroughly avoid issues on all platforms.
-
- ** A new container data type--containers.Map--is available. Map is a
- key/value storage container (a.k.a, a hash) that efficiently allows
- storing and retrieving values by name, rather than by position which
- is how arrays work.
-
- ** The bareword "import" is now recognized in scripts and functions.
- However, the functionality to import functions and classes from
- other namespaces into the local scope has not yet been implemented.
- Attempting to use "import" will provoke an error message.
-
- ** hex2num and num2hex now work for integer and char types and num2hex
- may optionally return a cell array of strings instead of a character
- array. If given a cell array of strings, hex2num now returns a
- numeric array of the same size as the input cell array. Previously,
- hex2num would accept a cell array of strings of arbitrary dimension
- but would always return a column vector.
-
- ** New special functions cosint, sinint, and gammaincinv have been added.
-
- ** Special functions in Octave have been rewritten for larger input
- domains, better accuracy, and additional options.
- * gammainc now accepts negative real values for X.
- * improved accuracy for gammainc, betainc, betaincinv, expint.
- * gammainc has new options "scaledlower" and "scaledupper".
- * betainc, betaincinv have new option "upper".
-
- ** The "names" option used in regular expressions now returns a struct
- array, rather than a struct with a cell array for each field. This
- change was made for Matlab compatibility.
-
- ** The quadcc function now uses both absolute tolerance and relative
- tolerance to determine the stopping criteria for an integration.
- To be compatible with other quadXXX functions, such as quadgk, the
- calling syntax has changed to
-
- quadcc (f, a, b, [AbsTol, [RelTol]])
-
- To update existing code, change instances of RelTol to [0, RelTol].
-
- quadcc (f, a, b, tol) => quadcc (f, a, b, [0, tol])
-
- A warning that a single tolerance input is now interpreted as an
- absolute tolerance will be issued in Octave versions 4.4 and 5,
- after which it will be removed. The warning has ID
- "Octave:quadcc:RelTol-conversion" and can be disabled with
-
- warning ("off", "Octave:quadcc:RelTol-conversion")
-
- ** The qr function now returns a standard factorization unless
- explicitly instructed to perform an economy factorization by using a
- final argument of 0.
-
- ** The Qt graphics toolkit now supports offscreen printing without osmesa
- if Octave was built with Qt >= 5.1.
-
- ** The built-in pager for display of large data is now disabled by
- default. To re-enable it for every Octave session add the following
- to your .octaverc file:
-
- more on;
-
- ** The FLTK toolkit is no longer prioritized for development. The
- number of Octave Maintainers is too small to support three different
- graphic toolkits. New development will target the Qt toolkit.
- While no longer prioritized, the FLTK toolkit is not deprecated and
- there is no schedule for its removal.
-
- ** The graphic object property "PickableParts" has been implemented
- which controls whether an object can accept mouse clicks.
-
- ** The graphic object property "Interruptible" has been fully
- implemented which controls whether a running callback function can
- be interrupted by another callback function.
-
- ** The graphic object property "HitTest" has been updated to be fully
- compatible with Matlab.
-
- ** Text objects now implement the properties "BackgroundColor",
- "EdgeColor", "LineStyle", "LineWidth", and "Margin".
-
- ** An initial implementation of alpha transparency has been made for
- patch and surface objects. Printing to svg and pdf is supported.
-
- ** ishandle now returns true for both graphics handle objects and
- Java objects. The latter change was made for Matlab compatibility.
- Use ishghandle or isgraphics if it is important not to include Java
- objects.
-
- ** The pkg command now accepts a URL as an argument, allowing a valid
- Octave package to be installed from any remote host with one command,
- for example
-
- pkg install https://example.org/download/example-package.tar.gz
-
- ** The following statistical functions have been moved from core
- Octave to the statistics package available from Octave Forge.
-
- BASE
- cloglog
- logit
- prctile
- probit
- qqplot
- table (renamed to crosstab)
-
- DISTRIBUTIONS
- betacdf
- betainv
- betapdf
- betarnd
- binocdf
- binoinv
- binopdf
- binornd
- cauchy_cdf
- cauchy_inv
- cauchy_pdf
- cauchy_rnd
- chi2cdf
- chi2inv
- chi2pdf
- chi2rnd
- expcdf
- expinv
- exppdf
- exprnd
- fcdf
- finv
- fpdf
- frnd
- gamcdf
- gaminv
- gampdf
- gamrnd
- geocdf
- geoinv
- geopdf
- geornd
- hygecdf
- hygeinv
- hygepdf
- hygernd
- kolmogorov_smirnov_cdf
- laplace_cdf
- laplace_inv
- laplace_pdf
- laplace_rnd
- logistic_cdf
- logistic_inv
- logistic_pdf
- logistic_rnd
- logncdf
- logninv
- lognpdf
- lognrnd
- nbincdf
- nbininv
- nbinpdf
- nbinrnd
- normcdf
- norminv
- normpdf
- normrnd
- poisscdf
- poissinv
- poisspdf
- poissrnd
- stdnormal_cdf
- stdnormal_inv
- stdnormal_pdf
- stdnormal_rnd
- tcdf
- tinv
- tpdf
- trnd
- unidcdf
- unidinv
- unidpdf
- unidrnd
- unifcdf
- unifinv
- unifpdf
- unifrnd
- wblcdf
- wblinv
- wblpdf
- wblrnd
- wienrnd
-
- MODELS
- logistic_regression
-
- TESTS
- anova
- bartlett_test
- chisquare_test_homogeneity
- chisquare_test_independence
- cor_test
- f_test_regression
- hotelling_test
- hotelling_test_2
- kolmogorov_smirnov_test
- kolmogorov_smirnov_test_2
- kruskal_wallis_test
- manova
- mcnemar_test
- prop_test_2
- run_test
- sign_test
- t_test
- t_test_2
- t_test_regression
- u_test
- var_test
- welch_test
- wilcoxon_test
- z_test
- z_test_2
-
- ** The following image functions have been moved from core Octave to
- the image package available from Octave Forge.
-
- ntsc2rgb
- rgb2ntsc
-
- ** Other new functions added in 4.4:
-
- bounds
- camlookat
- camorbit
- campos
- camroll
- camtarget
- camup
- camva
- camzoom
- corrcoef
- cosint
- decic
- erase
- gammaincinv
- getframe
- groot
- gsvd
- hgtransform
- humps
- integral
- integral2
- integral3
- isgraphics
- isstring
- mad
- ode15i
- ode15s
- openvar
- quad2d
- repelem
- rgb2gray
- rticks
- sinint
- tfqmr
- thetaticks
- vecnorm
- winqueryreg
- xticklabels
- xticks
- yticklabels
- yticks
- zticklabels
- zticks
-
- ** Deprecated functions.
-
- The following functions have been deprecated in Octave 4.4 and will
- be removed from Octave 6 (or whatever version is the second major
- release after 4.4):
-
- Function | Replacement
- ---------------------|------------------
- chop | sprintf for visual results
- desktop | isguirunning
- tmpnam | tempname
- toascii | double
- java2mat | __java2mat__
-
-
- ** The following functions were deprecated in Octave 4.0 and have been
- removed from Octave 4.4.
-
- allow_noninteger_range_as_index
- bicubic
- delaunay3
- do_braindead_shortcircuit_evaluation
- dump_prefs
- find_dir_in_path
- finite
- fmod
- fnmatch
- gmap40
- loadaudio
- luinc
- mouse_wheel_zoom
- nfields
- octave_tmp_file_name
- playaudio
- saveaudio
- setaudio
- syl
- usage
-
- ** The "Octave:undefined-return-values" warning ID is obsolete. Octave
- now throws an error for any attempts to assign undefined values that
- might be returned from functions.
-
- ** Deprecated graphics properties.
-
- The following properties or allowed corresponding values have been
- deprecated in Octave 4.4 and will be removed from Octave 6 (or whatever
- version is the second major release after 4.4):
-
- Object | Property | Value
- ---------------------|-------------------------|-------------------
- figure | doublebuffer |
- | mincolormap |
- | wvisual |
- | wvisualmode |
- | xdisplay |
- | xvisual |
- | xvisualmode |
- axes | drawmode |
- annotation | edgecolor ("rectangle") |
- text | fontweight | "demi" and "light"
- uicontrol | fontweight | "demi" and "light"
- uipanel | fontweight | "demi" and "light"
- uibuttongroup | fontweight | "demi" and "light"
-
- ** The rectangle and ellipse annotation property "edgecolor" has been
- deprecated and will be removed from Octave 6 (or whatever version
- is the second major release after 4.4). Use the property "color"
- instead.
-
- ** The header file oct-alloc.h has been removed along with the macros
- that it defined (DECLARE_OCTAVE_ALLOCATOR, DEFINE_OCTAVE_ALLOCATOR,
- and DEFINE_OCTAVE_ALLOCATOR2).
-
-
-Summary of bugs fixed for version 4.2.2 (2018-03-13):
-----------------------------------------------------
-
-Using the bug numbers listed below, find bug reports on the web using
-the URL https://savannah.gnu.org/bugs/?NNNNN
-
- ** make leftdiv work for scalar \ int-matrix (bug #51682)
-
- ** inputdlg.m: Avoid crash when prompt and defaults sizes differ (bug #53209)
-
- ** tie octave_classdef::numel method to "numel" user override method
- (bug #46571)
-
- ** fix performance of Sparse fsolve for complex sparse matrices (bug #53140)
-
- ** fix performance of Sparse fsolve (bug #53140)
-
- ** octave.desktop.in: No repetition of Name in Comment field and start I10n
- (bug #53078)
-
- ** don't create partially invalid graphic objects (bug #52904)
-
- ** test for incorrect regexprep on ARM platforms (bug #52810)
-
- ** fix incorrect regexprep on ARM platforms (bug #52810)
-
- ** correctly handle reading of characters >127 in scanf family (bug #52681)
-
- ** fix addpath for UNC paths on Windows (bug #51268)
-
- ** protect being-deleted objects on figure list from second deletion
- (bug #52666)
-
- ** dlmwrite.m: Close fid if filename is only one char long (bug #52679)
-
- ** set gnuplot color data to half output range when autoscaling zero input
- range (bug #52624)
-
- ** add polarplot() to the list of unimplemented functions (bug #52643)
-
- ** configure.ac: Fix test for Java version (bug #52617)
-
- ** for gnuplot toolkit, do not map TrueColor data to colormap size (bug #52599)
-
- ** make wheel scroll behave more consistently in pan mode (bug #52588)
-
- ** make gnuplot color have three components for interpolated edge color
- (bug #52595)
-
- ** simplify gnuplot toolkit scripts for image/non-image data plots (bug #52589)
-
- ** fix concatenation of empty char matrices with other strings (bug #52542)
-
- ** build: Fix compiling OCTAVE_ARPACK_OK_2 Fortran code (bug #52425)
-
- ** trisurf.m, trimesh.m: Fix input validation (bug #48109)
-
- ** allow uncommenting in editor when line begins with whitespace (bug #52406)
-
- ** do not extend selection when indenting/commenting in editor (bug #45610)
-
- ** remove all delimiters from whitespace list in textscan function (bug #52479)
-
- ** calculate 1-norm of matrices to assess whether NaN or Inf are present
- (bug #39000)
-
- ** prevent extra ampersand under KDE in cd-or-add-to-path dialog (bug #52423)
-
- ** plotyy.m: Fix error when using FUN2 argument (bug #48115)
-
- ** check ARPACK library for buggy behavior in configure (bug #52425)
-
- ** fix printing integer type images (bug #51558)
-
- ** fix segfault in delaunayn when Qhull memory is not properly cleared
- (bug #52410)
-
- ** fix segfault with CHOLMOD library and empty matrices (bug #52365)
-
- ** tag global and persistent symbols as variables when parsing (bug #52363)
-
- ** properly restore the input stream pointer at end of textscan (bug #52116 et
- al.)
-
- ** fix building with Qt4 for Windows (bug #52237)
-
- ** ensure numeric values are passed for the axes "clim" property (bug #52053)
-
- ** avoid abort on exit from GUI (bug #50664)
-
- ** correct auto limits on log axes with negative and zero values (bug #51861)
-
- ** fix warning in quadgk with zero size interval (bug #51867)
-
- ** sparse: correctly handle scalar column index (bug #51880)
-
- ** fix segfault in ichol under certain conditions (bug #51736)
-
- ** configure: ensure empty pkg-config results are actually empty (bug #51680)
-
- ** fix 'legend hide' for gnuplot (bug #50483)
-
- ** qqplot.m: Fix typo in input validation (bug #51458)
-
- ** add possible '\r' to smartindent regex exprepression (Bug #51279)
-
- ** make strncmp case sensitive again (bug #51384)
-
- ** fix possible infinite loop in normest1.m (bug #51241)
-
- ** also run unwind protect cleanup code on interrupt exceptions (bug #51209)
-
- ** fix crash when inverting complex matrices with NaNs (bug #51198)
-
- ** improve accuracy of residue for inputs with very different magnitudes
- (bug #51148)
-
- ** publish.m: Fix corruption of results for some code inputs (bug #51178)
-
- ** residue.m: Remove code that filters out small return values (bug #34266, bug
- #49291)
-
- ** avoid possible double free at interpreter exit (bug #51088)
-
- ** show stack trace for errors in command line and startup files (bug #49346)
-
- ** interp1.m: Return NA for all columns which are out of bounds (bug #51030)
-
- ** use idx_type for dimensions instead of int (bug #50934)
-
- ** show stack trace for wrong type arg errors (bug #50894)
-
- ** let mouse selection of Qt figures update "currentfigure" (bug #50666)
-
- ** disable qscintilla editor drag and drop so parent will handle it (Bug
- #50559)
-
- ** quadgk.m: Correct error messages which point to quadv (bug #50604)
-
- ** set version on AppUserModelId (Bug #50428)
-
- ** version-rcfile: Don't try to execute startup directory, only startup.m
- (bug #50593)
-
- ** dlmread: Return empty matrix when requested range is outside data
- (bug #50102)
-
- ** fix eigs for generalized nonsymmetric and shift-invert problems (bug #39573)
-
- ** fix eigs for the generalized eigenvalue problem (bug #50546)
-
- ** datetick.m: Fix uneven range bugs (bug #50493)
-
- ** datenum.m: Correct calculation for fractional leap years (bug #50508)
-
- ** datenum.m: Allow horizontal vectors of dates with fractional months
- (bug #50508)
-
- ** datenum.m: Accept legal input of vectors with fractional months (bug #50508)
-
- ** fix the anchor position in the info text of the doc browser (bug #50422)
-
- ** fix order of legend labels with plotyy axes (bug #50497)
-
- ** correct hggroup plot legends for gnuplot toolkit, add legend demo 17 items
- (bug #49341)
-
- ** for gnuplot graphics toolkit, show only one key entry for errorbars
- (bug #49260)
-
- ** fix compilation of jit caused by cset d0562b3159c7 (bug #50398)
-
- ** remove inline keyword on file_stat destructor which breaks MacOS compilation
- (bug #50234)
-
-Documentation bugs fixed:
-
- ** playblocking.m: Correct documentation about start and limits inputs
- (bug #51217)
-
- ** fix eig output argument description (bug #50524)
-
- ** remove backslashes before double quotes in m-file docstrings (bug #52870)
-
- ** tweaks to use single quotes instead of double quotes (bug #52870)
-
- ** correct fieldname of returned struct in ver (bug #52845)
-
- ** cleanup @code example in Appendix on test functions (bug #52852)
-
- ** fixes for signal, image, audio, and OOP chapters (bug #52844)
-
- ** fix issues in geometry, polynomial, and interpolation chapters (bug #52835)
-
- ** fix TeX documentation for qp and clarify size of inputs (bug #52829)
-
- ** correct errors in Diagonal matrix chapter of manual (bug #52814)
-
- ** replace @math{1e^{XXX}} sequences with raw 1eXXX (bug #52827)
-
- ** use '...' rather than deprecated '\' for line continuation (bug #52828)
-
- ** make documentation Sec 26.1 more consistent and Sec 25.4 clearer
- (bug #52685)
-
- ** documentation fixes for linspace, logspace, lookup (bug #52785)
-
- ** atan2d.m: Correct documentation to match atan docstring (bug #52786)
-
- ** small tweaks to fplot and surfnorm docstrings (bug #52761)
-
- ** rewrite documentation for Advanced Indexing (bug #52723)
-
- ** delete extra ']' in scanf docstring (bug #52742)
-
- ** fix mistaken use of space between function and '(' in documentation
- (bug #52723)
-
- ** fix various inconsistencies in manual (bug #52712)
-
- ** fix typo in cset 8354b505ad6b (bug #52702)
-
- ** fix inconsistencies with char, strvcat, strread docstrings (bug #52702.
-
- ** explain Matlab compatibility of fopen modes (bug #52644)
-
- ** update documentation for keywords to include classdef statements
- (bug #52591)
-
- ** fix documentation of third input to lsode() (bug #52664)
-
- ** clarify quiver/quiver3 documentation when a linestyle is given (bug #52608)
-
- ** new section about classdef classes with example (bug #44590)
-
- ** correct surface plot explanation of meshgridded results of 1 input
- (bug #52536)
-
- ** fix definition of Delaunay triangulation in docstrings (bug #52416)
-
- ** accumarray.m: Add '@' to function handles in docstring (bug #52418)
-
- ** update manual to explain \deg and \circ symbols (bug #52287)
-
- ** correct documentation for randg (bug #52118)
-
- ** add documentation about PCRE library regexp stack overflow (bug #51589)
-
- ** play.m: Correct documentation about start and limits inputs (bug #51217)
-
- ** redo docstring for qz (bug #50846)
-
- ** describe optional install dependencies PortAudio and SUNDIALS (bug #50513)
-
- ** update CITATION date, version, and permalink to manual (bug #47058)
-
-
-Summary of bugs fixed for version 4.2.1 (2017-02-22):
-----------------------------------------------------
-
-Using the bug numbers listed below, find bug reports on the web using
-the URL https://savannah.gnu.org/bugs/?NNNNN
-
- ** guarantee returning std::string from tilde_expand functions (bug #50234)
-
- ** workaround segfault in file_stat (bug #50234)
-
- ** genpropdoc.m: document more graphics properties (bug #50337)
-
- ** always fork and exec when starting the gui (bug #49609)
-
- ** print.m: fix regression with -append option (bug #50318)
-
- ** don't display legend, colorbar, and annotation axes coordinates
- (bug #50272)
-
- ** qp.m: Fix regression with incorrect vector dimensions (bug #50067)
-
- ** prevent infinite loop in global documentation search (bug #50177)
-
- ** connect execute command signal in editor constructor (bug #50171)
-
- ** connect editors execute command signal to the required slot (bug #50171)
-
- ** check if input is class method before declaring it unimplemented
- (patch #9238) (bug #49694)
-
- ** workaround segfault when an error occurs while printing (bug #49779)
-
- ** axis.m: Do not set plotboxaspectratio to 0 (bug #49755)
-
- ** don't rethrow exception in destructor (bug #49304)
-
- ** rethrow octave::exit_exception (bug #49304)
-
- ** update appdata.xml to follow conventions (bug #49952)
-
- ** mexproto.h (mxAssert, mxAssertS): ensure operator precedence (bug #50050)
-
- ** calculate error in solution for ode solvers correctly (bug #49950)
-
- ** use GetModuleFileName for getting octave path in windows (bug #48671)
-
- ** use C++ updaters for labels color (bug #49980)
-
- ** distinguish elements vs. bytes in fread (bug #49699)
-
- ** move frame2im and im2frame to image/ directory (bug #49939)
-
- ** fix undefined return argument for more than 2 outputs from ode solver
- (bug #49890)
-
- ** fix inv for hermitian matrices (bug #49904)
-
- ** fix gzip for certain types of gzip files (bug #49760)
-
- ** fix typo in liboctave version info (bug #49860)
-
- ** initialize ODE Event function with start time (bug #49846)
-
- ** allow configure test to succeed without implicit fcn decls (bug #49782)
-
- ** allow external docstrings from .oct files to be found again (bug #49687)
-
- ** don't require semicolon between property list elements (bug #49819)
-
- ** display.m: Correctly display output for non-class objects
- (bug #49753, #49794)
-
- ** don't run publish.tst unless OSMESA or gnuplot are available (bug #49767)
-
- ** find help for function aliases again (bug #49687)
-
- ** legend.m: backport cset 7184b4516a68 (bug #49675)
-
- ** preserve lasterror info on rethrow (bug #49642)
-
- ** norm: fix error in input argument validation leading to segfault
- (bug #49634)
-
-Documentation bugs fixed:
-
- ** overhaul Java interface description (bug #50299)
-
- ** add documentation for hex and binary prefix and _ separator
- (bug #50305, #50334)
-
- ** fix build of docs broken in sub2ind (bug #50348)
-
- ** version.m: document that "-release" returns an empty string (bug #50294)
-
- ** remove trailing "\n\" from sleep and usleep docstrings (bug #50301)
-
- ** expand documentation for cast() (bug #50201)
-
- ** correct two entries in Table 34.1 (bug #50203)
-
- ** oop.txi: Improve table formatting (bug #50203)
-
- ** fix '##' in middle of docstring/comment lines (bug #50145)
-
- ** reword documentation about subplots in 15.2.4 (bug #50148)
-
- ** update unimplemented list of functions and where to find them
- (bug #50098)
-
- ** compare_plot_demos: fix HTML syntax, simplify output, remove
- external deps (bug #49709)
-
- ** add more depth to explanation of '~' function argument (bug #49444)
-
- ** correct documentation for javaclasspath file (bug #49873)
-
- ** small fixes to docstrings (bug #49733)
-
- ** change text describing demo plots to reflect new ColorOrder (bug #49288)
-
-Other bugs fixed:
-
- ** add missing classdef test files (bug #49819)
-
-
-Summary of important user-visible changes for version 4.2 (2016-11-13):
-----------------------------------------------------------------------
-
- ** The parser has been extended to accept, but ignore, underscore
- characters in numbers. This facilitates writing more legible code
- by using '_' as a thousands separator or to group nibbles into bytes
- in hex constants.
-
- Examples: 1_000_000 == 1e6 or 0xDE_AD_BE_EF
-
- ** The parser has been extended to understand binary numbers which
- begin with the prefix '0b' or '0B'. The value returned is Octave's
- default numeric class of double, not at unsigned integer class.
- Therefore numbers greater than flintmax, i.e., 2^53, will lose some
- precision.
-
- Examples: 0b101 == 5 or 0B1100_0001 == 0xC1
-
- ** gnuplot 4.4 is now the minimum version supported by Octave.
-
- ** The default set of colors used to plot lines has been updated to be
- compatible with Matlab's new default color scheme. The line plot
- color scheme can be set with the axes property "ColorOrder".
-
- ** The default colormap is now set to "viridis" which is also the
- default colormap in matplotlib. This new colormap fixes some of the
- main issues with the old default colormap "jet" such as its bad
- "luminance profile" and is also more similar to Matlab's new default
- colormap "parula".
-
- ** The colormap function no longer supports the input argument "list"
- to show built-in colormaps. Use "help colormap" to find the
- built-in colormaps.
-
- ** The graphics command "hold on" now ensures that each new plot added
- to an existing plot has a different color or linestyle according to
- the "ColorOrder" and/or "LineStyleOrder" properties. This is
- equivalent to the old command "hold all" and was made for Matlab
- compatibility. Existing code *may* produce differently colored
- plots if it did not specify the color for a plot and relied on each
- new plot having the default first color in the "ColorOrder"
- property.
-
- ** When starting, Octave now looks in the function path for a file
- startup.m and executes any commands found there. This change was
- made to accommodate Matlab users. Octave has it's own configuration
- system based on the file .octaverc which is preferred.
-
- ** Octal ('\NNN') and hex ('\xNN') escape sequences in single quoted
- strings are now interpreted by the function do_string_escapes().
- The *printf family of functions now supports octal and hex escape
- sequences in single-quoted strings for Matlab compatibility.
-
- ** Special octal and hex escape sequences for the pattern and
- replacement strings in regular expressions are now interpreted for
- Matlab compatibility.
-
- octal: '\oNNN' or '\o{NNN}'
- hex : '\xNN' or '\x{NN}'
-
- ** Unknown escape sequences in the replacement string for regexprep are
- now substituted with their unescaped version and no warning is
- emitted. This change was made for Matlab compatibility.
-
- Example: regexprep ('a', 'a', 'x\yz')
- => 'xyz'
-
- ** mkfifo now interprets the MODE argument as an octal, not decimal,
- integer. This is consistent with the equivalent shell command.
-
- ** linspace now returns an empty matrix if the number of requested
- points is 0 or a negative number. This change was made to be
- compatible with Matlab releases newer than 2011. In addition,
- Octave no longer supports matrix inputs for A or B.
-
- ** The cov function now returns the complex conjugate of the result
- from previous versions of Octave. This change was made for
- compatibility with Matlab.
-
- ** condest now works with a normest1 compatible syntax.
-
- ** The griddata function no longer plots the interpolated mesh if no
- output argument is requested, instead the vector or array of
- interpolated values is always returned for Matlab compatibility.
-
- ** The new function "light" and the corresponding graphics object
- provide light and shadow effects for patch and surface objects.
-
- ** The surfnorm function now returns unnormalized (magnitude != 1)
- normal vectors for compatibility with Matlab.
-
- ** The normal vectors returned from isonormals have been reversed to
- point towards smaller values for compatibility with Matlab.
-
- ** The quadl function now uses an absolute, rather than relative,
- tolerance for Matlab compatibility. The default tolerance is 1e-6
- which may result in lower precision results than previous versions
- of Octave which used eps as the relative tolerance. The quadl
- function has also been extended to return a second output with the
- total number of function evaluations.
-
- ** The textscan function is now built-in and is much faster and much
- more Matlab-compatible than the previous m-file version.
-
- ** Dialog boxes--errordlg, helpdlg, inputdlg, listdlg, msgbox,
- questdlg, and warndlg--now exclusively use Qt for rendering.
- Java based versions have been removed.
-
- ** The axes properties "TitleFontSizeMultiplier" and "TitleFontWeight"
- are now implemented which control the default appearance of text
- created with title().
- The axes property "LabelFontSizeMultiplier" is now implemented
- which controls the default appearance of text created with
- xlabel(), ylabel(), or zlabel().
-
- ** The graphics property "box" for axes now defaults to "off".
- To obtain equivalent plots to previous versions of Octave use
- set (0, "DefaultAxesBox", "on");
- in your .octaverc file.
-
- ** The graphics property "boxstyle" has been implemented. The default
- is "back" which draws only the back planes in a 3-D view. If the
- option is "full" then all planes are drawn.
-
- ** The graphics property "erasemode" has been hidden, and will
- eventually be removed. This property has also been removed
- from Matlab, and was never implemented in Octave.
-
- ** The graphics property "graphicssmoothing" for figures now controls
- whether anti-aliasing will be used for lines. The default is "on".
-
- ** The value "zero" for the axes properties "xaxislocation" and
- "yaxislocation" has been deprecated and will be removed from
- Octave 5. Use "origin" instead.
-
- ** The publish function allows easy publication of Octave script files
- in HTML or other formats, including figures and output created by
- this script. It comes with its counterpart grabcode, which lets one
- literally grab the HTML published code from a remote website, for
- example.
-
- ** The value of the MEX variable TrapFlag now defaults to 0, which will
- cause Octave to abort execution of a MEX file and return to the
- prompt if an error is encountered in mexCallMATLAB.
-
- ** The MEX API now includes the function mexCallMATLABWithTrap. This
- function will not abort if an error occurs during mexCallMATLAB, but
- instead will return execution to the MEX function for error
- handling.
-
- ** The MEX API functions for input validation that begin with "mxIs"
- (e.g., mxIsDouble, mxIsEmpty, etc.) now return type bool rather than
- type int.
-
- ** The functions mxAssert and mxAssertS for checking assertions have
- been added. In order to avoid a performance penalty they are only
- compiled in to debug versions of a MEX file, i.e., that are produced
- when the '-g' option is given to mex or mkoctfile.
-
- ** Other new MEX API functions include mexEvalStringWithTrap,
- mxIsScalar, mxCreateUninitNumericArray, mxCreateUninitNumericMatrix.
-
- ** Other new functions added in 4.2:
-
- audioformats
- camlight
- condeig
- deg2rad
- dialog
- evalc
- hash
- im2double
- isocaps
- lighting
- localfunctions
- material
- normest1
- ode23
- ode45
- odeget
- odeplot
- odeset
- padecoef
- profexport
- psi
- rad2deg
- reducepatch
- reducevolume
- smooth3
- uibuttongroup
-
- ** Deprecated functions.
-
- The following functions have been deprecated in Octave 4.2 and will
- be removed from Octave 5 (or whatever version is the second major
- release after 4.2):
-
- Function | Replacement
- ---------------------|------------------
- bitmax | flintmax
- mahalanobis | mahal in Octave Forge statistics pkg
- md5sum | hash
- octave_config_info | __octave_config_info__
- onenormest | normest1
- sleep | pause
- usleep | pause
- wavread | audioread
- wavwrite | audiowrite
-
- ** The following functions were deprecated in Octave 3.8 and have been
- removed from Octave 4.2.
-
- default_save_options java_new
- gen_doc_cache java_unsigned_conversion
- interp1q javafields
- isequalwithequalnans javamethods
- java_convert_matrix re_read_readline_init_file
- java_debug read_readline_init_file
- java_invoke saving_history
-
- ** The global error_state variable in Octave's C++ API has been
- deprecated and will be removed in a future version. Now the error
- and print_usage functions throw an exception
- (octave::execution_exception) after displaying the error message.
- This makes the error and print_usage functions in C++ work more like
- the corresponding functions in the scripting language.
-
- ** The default error handlers in liboctave have been updated to use
- exceptions. After displaying an error message they no longer return
- control to the calling program. The error handler function can be
- customized through the global variables
- "current_liboctave_error_handler" and
- "current_liboctave_error_with_id_handler". If a programmer has
- installed their own custom error handling routines when directly
- linking with liboctave then these must be updated to throw an
- exception and not return to the calling program.
-
- ** The system for common errors and warnings has been renamed from
- gripe_XXX to either err_XXX if error is called or warn_XXX if
- warning is called. The gripe_XXX functions are deprecated and will
- be removed in version 5.
-
- ** New configure option, --enable-address-sanitizer-flags, to build
- Octave with memory allocator checks (similar to those in valgrind)
- built in.
-
-Summary of important user-visible changes for version 4.0 (2015-05-23):
-----------------------------------------------------------------------
-
- ** A graphical user interface is now the default when running Octave
- interactively. The start-up option --no-gui will run the familiar
- command line interface, and still allows use of the GUI dialogs and
- qt plotting toolkit. The option --no-gui-libs runs a minimalist
- command line interface that does not link with the Qt libraries and
- uses the fltk toolkit for plotting.
-
- ** Octave now uses OpenGL graphics with Qt widgets by default. If
- OpenGL libraries are not available when Octave is built, gnuplot is
- used. You may choose to use the fltk or gnuplot toolkit for
- graphics by executing the command
-
- graphics_toolkit ("fltk")
- OR
- graphics_toolkit ("gnuplot")
-
- Adding such a command to your ~/.octaverc file will set the default
- for each session.
-
- ** A new syntax for object oriented programming termed classdef has
- been introduced. See the manual for more extensive documentation of
- the classdef interface.
-
- New keywords:
-
- classdef endclassdef
- enumeration endenumeration
- events endevents
- methods endmethods
- properties endproperties
-
- ** New audio functions and classes:
-
- audiodevinfo audioread sound
- audioinfo audiorecorder soundsc
- audioplayer audiowrite
-
- ** Other new classes in Octave 4.0:
-
- audioplayer inputParser
- audiorecorder
-
- ** Optional stricter Matlab compatibility for ranges, diagonal
- matrices, and permutation matrices.
-
- Octave has internal optimizations which use space-efficient storage
- for the three data types above. Three new functions have been added
- which control whether the optimizations are used (default), or
- whether the data types are stored as full matrices.
-
- disable_range disable_diagonal_matrix disable_permutation_matrix
-
- All three optimizations are disabled if Octave is started with the
- --braindead command line option.
-
- ** The preference
-
- do_braindead_shortcircuit_evaluation
-
- is now enabled by default.
-
- ** The preference
-
- allow_noninteger_range_as_index
-
- is now enabled by default and the warning ID
-
- Octave:noninteger-range-as-index
-
- is now set to "on" by default instead of "error" by default and "on"
- for --traditional.
-
- ** The "backtrace" warning option is now enabled by default. This
- change was made for Matlab compatibility.
-
- ** For compatibility with Matlab, the "ismatrix (x)" function now only
- checks the dimension of "x". The old behavior of "ismatrix" is
- obtained by "isnumeric (x) || islogical (x) || ischar (x)".
-
- ** The nextpow2 function behavior has been changed for vector inputs.
- Instead of computing `nextpow2 (length (x))', it will now compute
- nextpow2 for each element of the input. This change is Matlab
- compatible, and also prevents bugs for "vectors" of length 1.
-
- ** polyeig now returns a row vector of eigenvalues rather than a matrix
- with the eigenvalues on the diagonal. This change was made for
- Matlab compatibility.
-
- ** Interpolation function changes for Matlab compatibility
-
- The interpolation method 'cubic' is now equivalent to 'pchip' for
- interp1, interp2, and interp3. Previously, 'cubic' was equivalent
- to 'spline' for interp2. This may produce different results as
- 'spline' has continuous 1st and 2nd derivatives while 'pchip' only
- has a continuous 1st derivative. The methods 'next' and 'previous'
- have been added to interp1 for compatibility.
-
- ** The delaunay function has been extended to accept 3-D inputs for
- Matlab compatibility. The delaunay function no longer plots the
- triangulation if no output argument is requested, instead, the
- triangulation is always returned. The delaunay3 function which
- handles 3-D inputs has been deprecated in favor of delaunay.
-
- ** The trigonometric functions asin and acos return different phase
- values from previous versions of Octave when the input is outside
- the principal branch ([-1, 1]). If the real portion of the input is
- greater than 1 then the limit from below is taken. If the real
- portion is less than 1 then the limit from above is taken. This
- criteria is consistent with several other numerical analysis
- software packages.
-
- ** The hyperbolic function acosh now returns values with a phase in the
- range [-pi/2, +pi/2]. Previously Octave returned values in the
- range [0, pi]. This is consistent with several other numerical
- analysis software packages.
-
- ** strfind changes when using empty pattern ("") for Matlab
- compatibility
-
- strfind now returns an empty array when the pattern itself is empty.
- In previous versions of Octave, strfind matched at every character
- location when the pattern was empty.
-
- NEW
- strfind ("abc", "") => []
- OLD
- strfind ("abc", "") => [1, 2, 3, 4]
-
- ** Integer formats used in the printf family of functions now work for
- 64-bit integers and are more compatible with Matlab when printing
- non-integer values. Now instead of truncating, Octave will switch
- the effective format to '%g' in the following circumstances:
-
- * the value of an integer type (int8, uint32, etc.) value exceeds
- the maximum for the format specifier. For '%d', the limit is
- intmax ('int64') and for '%u' it is intmax ('uint64').
-
- * round(x) != x or the value is outside the range allowed by the
- integer format specifier.
-
- There is still one difference: Matlab switches to '%e' and Octave
- switches to '%g'.
-
- ** The functions intersect, setdiff, setxor, and union now return a
- column vector as output unless the input was a row vector. This
- change was made for Matlab compatibility.
-
- ** The inpolygon function now returns true for points that are within
- the polygon OR on it's edge. This change was made for Matlab
- compatibility.
-
- ** The archive family of functions (bzip2, gzip, zip, tar) and their
- unpacking routines (bunzip2, gunzip, unzip, untar, unpack) have been
- recoded. Excepting unpack, the default is now to place files in the
- same directory as the archive (on unpack) or as the original files
- (on archiving).
-
- ** Qt and FLTK graphics toolkits now support offscreen rendering on
- Linux. In other words, print will work even when the figure
- visibility is "off".
-
- ** Z-order stacking issues with patches, grid lines, and line object
- plot markers for on screen display and printing have all been
- resolved. For 2-D plots the axis grid lines can be placed on top of
- the plot with set (gca, "layer", "top").
-
- ** The patch graphic object has been overhauled. It now produces
- visual results equivalent to Matlab even for esoteric combinations
- of faces/vertices/cdata.
-
- ** The polar() plot function now draws a circular theta axis and radial
- rho axis rather than using a rectangular x/y axis.
-
- ** linkprop has been completely re-coded for performance and Matlab
- compatibility. It now returns a linkprop object which must be
- stored in a variable for as long as the graphic objects should
- remain linked. To unlink properties use 'clear hlink' where hlink
- is the variable containing the linkprop object.
-
- ** isprime has been extended to operate on negative and complex inputs.
-
- ** xor has been extended to accept more than two arguments in which
- case it performs cumulative XOR reduction.
-
- ** The following functions now support N-dimensional arrays:
-
- fliplr flipud rot90 rectint
-
- ** The new warning ID "Octave:data-file-in-path" replaces the three
- previous separate warning IDs "Octave:fopen-file-in-path",
- "Octave:load-file-in-path", and "Octave:md5sum-file-in-path".
-
- ** The warning ID Octave:singular-matrix-div has been replaced by
- Octave:nearly-singular-matrix and Octave:singular-matrix.
-
- ** The warning ID Octave:matlab-incompatible has been replaced by
- Octave:language-extension to better reflect its meaning.
-
- ** The warning ID Octave:broadcast has been removed. Instead automatic
- broadcasting will throw an Octave:language-extension warning. This
- warning ID is used for broadcasting as well as other features not
- available in Matlab.
-
- ** Other new functions added in 4.0:
-
- annotation
- bandwidth
- cubehelix
- dir_in_loadpath
- flip
- frame2im
- get_home_directory
- hgload
- hgsave
- ichol
- ilu
- im2frame
- isbanded
- isdiag
- isstudent
- istril
- istriu
- javachk
- jit_failcnt
- linkaxes
- lscov
- metaclass
- numfields
- open
- ordschur
- pan
- qmr
- rotate
- rotate3d
- sylvester
- unsetenv
- validateattributes
- zoom
-
- ** inline() scheduled for eventual deprecation by Matlab
-
- Functions created through the use of inline are scheduled for
- deprecation by Matlab. When this occurs Octave will continue to
- support inline functions for an indeterminate amount of time before
- also removing support. All new code should use anonymous functions
- in place of inline functions.
-
- ** Deprecated functions.
-
- The following functions have been deprecated in Octave 4.0 and will
- be removed from Octave 4.4 (or whatever version is the second major
- release after 4.0):
-
- Function | Replacement
- ---------------------|------------------
- bicubic | interp2
- delaunay3 | delaunay
- dump_prefs | individual preference get/set routines
- find_dir_in_path | dir_in_loadpath
- finite | isfinite
- fmod | rem
- fnmatch | glob or regexp
- gmap40 | ----
- loadaudio | audioread
- luinc | ilu or ichol
- mouse_wheel_zoom | mousewheelzoom axes property
- nfields | numfields
- octave_tmp_file_name | tempname
- playaudio | audioplayer
- saveaudio | audiowrite
- syl | sylvester
- usage | print_usage
-
- allow_noninteger_range_as_index
- do_braindead_shortcircuit_evaluation
- setaudio
-
- ** The following functions were deprecated in Octave 3.8 and will be
- removed from Octave 4.2 (or whatever version is the second major
- release after 3.8):
-
- default_save_options java_new
- gen_doc_cache java_unsigned_conversion
- interp1q javafields
- isequalwithequalnans javamethods
- java_convert_matrix re_read_readline_init_file
- java_debug read_readline_init_file
- java_invoke saving_history
-
- ** The following functions were deprecated in Octave 3.6 and have been
- removed from Octave 4.0.
-
- cut polyderiv
- cor shell_cmd
- corrcoef studentize
- __error_text__ sylvester_matrix
- error_text
-
- ** The following keywords were deprecated in Octave 3.8 and have been
- removed from Octave 4.0
-
- static
-
- ** The following configuration variables were deprecated in Octave 3.8
- and have been removed from Octave 4.0
-
- CC_VERSION (now GCC_VERSION)
- CXX_VERSION (now GXX_VERSION)
-
- ** The internal function atan2 of the sparse matrix class has been
- deprecated in Octave 4.0 and will be removed from Octave 4.4 (or
- whatever version is the second major release after 4.0). Use the
- Fatan2 function with sparse inputs as a replacement.
-
- ** The internal class Octave_map was deprecated in Octave 3.8 and has
- been removed from Octave 4.0. Replacement classes are octave_map
- (struct array) or octave_scalar_map for a single structure.
-
- ** Octave now has OpenMP enabled by default if the system provides a
- working OpenMP implementation. This allows oct-file modules to take
- advantage of OpenMP if desired. This can be disabled when building
- Octave with the configure option --disable-openmp.
-
- ** Octave now automatically truncates intermediate calculations done
- with floating point values to 64 bits. Some hardware math
- co-processors, such as the x87, maintain extra precision, but this
- leads to disagreements in calculations when compared to reference
- implementations in software using the IEEE standard for double
- precision. There was no measurable performance impact to this
- change, but it may be disabled with the configure option
- --disable-float-truncate. MinGW and Cygwin platforms, as well as
- GCC compilers >= 5.0 require this feature. Non-x87 hardware, or
- hardware using SSE options exclusively, can disable float truncation
- if desired.
-
----------------------------------------------------------
-
-See NEWS.3 for old news.
diff -r 7ecd07721cca -r 86ddba86efbe etc/NEWS.4.md
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/NEWS.4.md Wed Dec 08 22:43:24 2021 +0900
@@ -0,0 +1,1350 @@
+Summary of important user-visible changes for version 4.4 (2018-04-30):
+----------------------------------------------------------------------
+
+ ** A graphical Variable Editor has been added to the GUI interface.
+ It uses a spreadsheet-like interface for quick, intuitive editing
+ of variables. The Variable Editor is launched by double-clicking
+ on a variable name in the Workspace Window or by typing
+ "openvar VARIABLE_NAME" in the Command Window.
+
+ ** On systems with 64-bit pointers, --enable-64 is now the default and
+ Octave always uses 64-bit indexing. However, if the configure
+ script determines that the BLAS library uses 32-bit integers, then
+ operations using the following libraries are limited to arrays with
+ dimensions that are smaller than 2^31 elements:
+
+ BLAS LAPACK QRUPDATE SuiteSparse ARPACK
+
+ Additionally, the following libraries use "int" internally, so
+ maximum problem sizes are always limited:
+
+ glpk Qhull
+
+ ** The octave command no longer starts the GUI by default. Most users
+ starting Octave from a shell were expecting the command line
+ interface, and desktop launchers already required the `--force-gui'
+ option. With this change, desktop launchers should be modified to
+ use the new option `--gui'. The previous `--force-gui' option will
+ continue to work, and maps to `--gui', but it will be removed in
+ Octave 6.
+
+ ** A known bug in Qt (https://bugreports.qt.io/browse/QTBUG-55357) is
+ addressed by limiting GUI sub-panel relocation capabilities for Qt
+ versions in the range >= 5.6.1 and < 5.7.1. However, this may not
+ thoroughly avoid issues on all platforms.
+
+ ** A new container data type--containers.Map--is available. Map is a
+ key/value storage container (a.k.a, a hash) that efficiently allows
+ storing and retrieving values by name, rather than by position which
+ is how arrays work.
+
+ ** The bareword "import" is now recognized in scripts and functions.
+ However, the functionality to import functions and classes from
+ other namespaces into the local scope has not yet been implemented.
+ Attempting to use "import" will provoke an error message.
+
+ ** hex2num and num2hex now work for integer and char types and num2hex
+ may optionally return a cell array of strings instead of a character
+ array. If given a cell array of strings, hex2num now returns a
+ numeric array of the same size as the input cell array. Previously,
+ hex2num would accept a cell array of strings of arbitrary dimension
+ but would always return a column vector.
+
+ ** New special functions cosint, sinint, and gammaincinv have been added.
+
+ ** Special functions in Octave have been rewritten for larger input
+ domains, better accuracy, and additional options.
+ * gammainc now accepts negative real values for X.
+ * improved accuracy for gammainc, betainc, betaincinv, expint.
+ * gammainc has new options "scaledlower" and "scaledupper".
+ * betainc, betaincinv have new option "upper".
+
+ ** The "names" option used in regular expressions now returns a struct
+ array, rather than a struct with a cell array for each field. This
+ change was made for Matlab compatibility.
+
+ ** The quadcc function now uses both absolute tolerance and relative
+ tolerance to determine the stopping criteria for an integration.
+ To be compatible with other quadXXX functions, such as quadgk, the
+ calling syntax has changed to
+
+ quadcc (f, a, b, [AbsTol, [RelTol]])
+
+ To update existing code, change instances of RelTol to [0, RelTol].
+
+ quadcc (f, a, b, tol) => quadcc (f, a, b, [0, tol])
+
+ A warning that a single tolerance input is now interpreted as an
+ absolute tolerance will be issued in Octave versions 4.4 and 5,
+ after which it will be removed. The warning has ID
+ "Octave:quadcc:RelTol-conversion" and can be disabled with
+
+ warning ("off", "Octave:quadcc:RelTol-conversion")
+
+ ** The qr function now returns a standard factorization unless
+ explicitly instructed to perform an economy factorization by using a
+ final argument of 0.
+
+ ** The Qt graphics toolkit now supports offscreen printing without osmesa
+ if Octave was built with Qt >= 5.1.
+
+ ** The built-in pager for display of large data is now disabled by
+ default. To re-enable it for every Octave session add the following
+ to your .octaverc file:
+
+ more on;
+
+ ** The FLTK toolkit is no longer prioritized for development. The
+ number of Octave Maintainers is too small to support three different
+ graphic toolkits. New development will target the Qt toolkit.
+ While no longer prioritized, the FLTK toolkit is not deprecated and
+ there is no schedule for its removal.
+
+ ** The graphic object property "PickableParts" has been implemented
+ which controls whether an object can accept mouse clicks.
+
+ ** The graphic object property "Interruptible" has been fully
+ implemented which controls whether a running callback function can
+ be interrupted by another callback function.
+
+ ** The graphic object property "HitTest" has been updated to be fully
+ compatible with Matlab.
+
+ ** Text objects now implement the properties "BackgroundColor",
+ "EdgeColor", "LineStyle", "LineWidth", and "Margin".
+
+ ** An initial implementation of alpha transparency has been made for
+ patch and surface objects. Printing to svg and pdf is supported.
+
+ ** ishandle now returns true for both graphics handle objects and
+ Java objects. The latter change was made for Matlab compatibility.
+ Use ishghandle or isgraphics if it is important not to include Java
+ objects.
+
+ ** The pkg command now accepts a URL as an argument, allowing a valid
+ Octave package to be installed from any remote host with one command,
+ for example
+
+ pkg install https://example.org/download/example-package.tar.gz
+
+ ** The following statistical functions have been moved from core
+ Octave to the statistics package available from Octave Forge.
+
+ BASE
+ cloglog
+ logit
+ prctile
+ probit
+ qqplot
+ table (renamed to crosstab)
+
+ DISTRIBUTIONS
+ betacdf
+ betainv
+ betapdf
+ betarnd
+ binocdf
+ binoinv
+ binopdf
+ binornd
+ cauchy_cdf
+ cauchy_inv
+ cauchy_pdf
+ cauchy_rnd
+ chi2cdf
+ chi2inv
+ chi2pdf
+ chi2rnd
+ expcdf
+ expinv
+ exppdf
+ exprnd
+ fcdf
+ finv
+ fpdf
+ frnd
+ gamcdf
+ gaminv
+ gampdf
+ gamrnd
+ geocdf
+ geoinv
+ geopdf
+ geornd
+ hygecdf
+ hygeinv
+ hygepdf
+ hygernd
+ kolmogorov_smirnov_cdf
+ laplace_cdf
+ laplace_inv
+ laplace_pdf
+ laplace_rnd
+ logistic_cdf
+ logistic_inv
+ logistic_pdf
+ logistic_rnd
+ logncdf
+ logninv
+ lognpdf
+ lognrnd
+ nbincdf
+ nbininv
+ nbinpdf
+ nbinrnd
+ normcdf
+ norminv
+ normpdf
+ normrnd
+ poisscdf
+ poissinv
+ poisspdf
+ poissrnd
+ stdnormal_cdf
+ stdnormal_inv
+ stdnormal_pdf
+ stdnormal_rnd
+ tcdf
+ tinv
+ tpdf
+ trnd
+ unidcdf
+ unidinv
+ unidpdf
+ unidrnd
+ unifcdf
+ unifinv
+ unifpdf
+ unifrnd
+ wblcdf
+ wblinv
+ wblpdf
+ wblrnd
+ wienrnd
+
+ MODELS
+ logistic_regression
+
+ TESTS
+ anova
+ bartlett_test
+ chisquare_test_homogeneity
+ chisquare_test_independence
+ cor_test
+ f_test_regression
+ hotelling_test
+ hotelling_test_2
+ kolmogorov_smirnov_test
+ kolmogorov_smirnov_test_2
+ kruskal_wallis_test
+ manova
+ mcnemar_test
+ prop_test_2
+ run_test
+ sign_test
+ t_test
+ t_test_2
+ t_test_regression
+ u_test
+ var_test
+ welch_test
+ wilcoxon_test
+ z_test
+ z_test_2
+
+ ** The following image functions have been moved from core Octave to
+ the image package available from Octave Forge.
+
+ ntsc2rgb
+ rgb2ntsc
+
+ ** Other new functions added in 4.4:
+
+ bounds
+ camlookat
+ camorbit
+ campos
+ camroll
+ camtarget
+ camup
+ camva
+ camzoom
+ corrcoef
+ cosint
+ decic
+ erase
+ gammaincinv
+ getframe
+ groot
+ gsvd
+ hgtransform
+ humps
+ integral
+ integral2
+ integral3
+ isgraphics
+ isstring
+ mad
+ ode15i
+ ode15s
+ openvar
+ quad2d
+ repelem
+ rgb2gray
+ rticks
+ sinint
+ tfqmr
+ thetaticks
+ vecnorm
+ winqueryreg
+ xticklabels
+ xticks
+ yticklabels
+ yticks
+ zticklabels
+ zticks
+
+ ** Deprecated functions.
+
+ The following functions have been deprecated in Octave 4.4 and will
+ be removed from Octave 6 (or whatever version is the second major
+ release after 4.4):
+
+ Function | Replacement
+ ---------------------|------------------
+ chop | sprintf for visual results
+ desktop | isguirunning
+ tmpnam | tempname
+ toascii | double
+ java2mat | __java2mat__
+
+
+ ** The following functions were deprecated in Octave 4.0 and have been
+ removed from Octave 4.4.
+
+ allow_noninteger_range_as_index
+ bicubic
+ delaunay3
+ do_braindead_shortcircuit_evaluation
+ dump_prefs
+ find_dir_in_path
+ finite
+ fmod
+ fnmatch
+ gmap40
+ loadaudio
+ luinc
+ mouse_wheel_zoom
+ nfields
+ octave_tmp_file_name
+ playaudio
+ saveaudio
+ setaudio
+ syl
+ usage
+
+ ** The "Octave:undefined-return-values" warning ID is obsolete. Octave
+ now throws an error for any attempts to assign undefined values that
+ might be returned from functions.
+
+ ** Deprecated graphics properties.
+
+ The following properties or allowed corresponding values have been
+ deprecated in Octave 4.4 and will be removed from Octave 6 (or whatever
+ version is the second major release after 4.4):
+
+ Object | Property | Value
+ ---------------------|-------------------------|-------------------
+ figure | doublebuffer |
+ | mincolormap |
+ | wvisual |
+ | wvisualmode |
+ | xdisplay |
+ | xvisual |
+ | xvisualmode |
+ axes | drawmode |
+ annotation | edgecolor ("rectangle") |
+ text | fontweight | "demi" and "light"
+ uicontrol | fontweight | "demi" and "light"
+ uipanel | fontweight | "demi" and "light"
+ uibuttongroup | fontweight | "demi" and "light"
+
+ ** The rectangle and ellipse annotation property "edgecolor" has been
+ deprecated and will be removed from Octave 6 (or whatever version
+ is the second major release after 4.4). Use the property "color"
+ instead.
+
+ ** The header file oct-alloc.h has been removed along with the macros
+ that it defined (DECLARE_OCTAVE_ALLOCATOR, DEFINE_OCTAVE_ALLOCATOR,
+ and DEFINE_OCTAVE_ALLOCATOR2).
+
+
+Summary of bugs fixed for version 4.2.2 (2018-03-13):
+----------------------------------------------------
+
+Using the bug numbers listed below, find bug reports on the web using
+the URL https://savannah.gnu.org/bugs/?NNNNN
+
+ ** make leftdiv work for scalar \ int-matrix (bug #51682)
+
+ ** inputdlg.m: Avoid crash when prompt and defaults sizes differ (bug #53209)
+
+ ** tie octave_classdef::numel method to "numel" user override method
+ (bug #46571)
+
+ ** fix performance of Sparse fsolve for complex sparse matrices (bug #53140)
+
+ ** fix performance of Sparse fsolve (bug #53140)
+
+ ** octave.desktop.in: No repetition of Name in Comment field and start I10n
+ (bug #53078)
+
+ ** don't create partially invalid graphic objects (bug #52904)
+
+ ** test for incorrect regexprep on ARM platforms (bug #52810)
+
+ ** fix incorrect regexprep on ARM platforms (bug #52810)
+
+ ** correctly handle reading of characters >127 in scanf family (bug #52681)
+
+ ** fix addpath for UNC paths on Windows (bug #51268)
+
+ ** protect being-deleted objects on figure list from second deletion
+ (bug #52666)
+
+ ** dlmwrite.m: Close fid if filename is only one char long (bug #52679)
+
+ ** set gnuplot color data to half output range when autoscaling zero input
+ range (bug #52624)
+
+ ** add polarplot() to the list of unimplemented functions (bug #52643)
+
+ ** configure.ac: Fix test for Java version (bug #52617)
+
+ ** for gnuplot toolkit, do not map TrueColor data to colormap size (bug #52599)
+
+ ** make wheel scroll behave more consistently in pan mode (bug #52588)
+
+ ** make gnuplot color have three components for interpolated edge color
+ (bug #52595)
+
+ ** simplify gnuplot toolkit scripts for image/non-image data plots (bug #52589)
+
+ ** fix concatenation of empty char matrices with other strings (bug #52542)
+
+ ** build: Fix compiling OCTAVE_ARPACK_OK_2 Fortran code (bug #52425)
+
+ ** trisurf.m, trimesh.m: Fix input validation (bug #48109)
+
+ ** allow uncommenting in editor when line begins with whitespace (bug #52406)
+
+ ** do not extend selection when indenting/commenting in editor (bug #45610)
+
+ ** remove all delimiters from whitespace list in textscan function (bug #52479)
+
+ ** calculate 1-norm of matrices to assess whether NaN or Inf are present
+ (bug #39000)
+
+ ** prevent extra ampersand under KDE in cd-or-add-to-path dialog (bug #52423)
+
+ ** plotyy.m: Fix error when using FUN2 argument (bug #48115)
+
+ ** check ARPACK library for buggy behavior in configure (bug #52425)
+
+ ** fix printing integer type images (bug #51558)
+
+ ** fix segfault in delaunayn when Qhull memory is not properly cleared
+ (bug #52410)
+
+ ** fix segfault with CHOLMOD library and empty matrices (bug #52365)
+
+ ** tag global and persistent symbols as variables when parsing (bug #52363)
+
+ ** properly restore the input stream pointer at end of textscan (bug #52116 et
+ al.)
+
+ ** fix building with Qt4 for Windows (bug #52237)
+
+ ** ensure numeric values are passed for the axes "clim" property (bug #52053)
+
+ ** avoid abort on exit from GUI (bug #50664)
+
+ ** correct auto limits on log axes with negative and zero values (bug #51861)
+
+ ** fix warning in quadgk with zero size interval (bug #51867)
+
+ ** sparse: correctly handle scalar column index (bug #51880)
+
+ ** fix segfault in ichol under certain conditions (bug #51736)
+
+ ** configure: ensure empty pkg-config results are actually empty (bug #51680)
+
+ ** fix 'legend hide' for gnuplot (bug #50483)
+
+ ** qqplot.m: Fix typo in input validation (bug #51458)
+
+ ** add possible '\r' to smartindent regex exprepression (Bug #51279)
+
+ ** make strncmp case sensitive again (bug #51384)
+
+ ** fix possible infinite loop in normest1.m (bug #51241)
+
+ ** also run unwind protect cleanup code on interrupt exceptions (bug #51209)
+
+ ** fix crash when inverting complex matrices with NaNs (bug #51198)
+
+ ** improve accuracy of residue for inputs with very different magnitudes
+ (bug #51148)
+
+ ** publish.m: Fix corruption of results for some code inputs (bug #51178)
+
+ ** residue.m: Remove code that filters out small return values (bug #34266, bug
+ #49291)
+
+ ** avoid possible double free at interpreter exit (bug #51088)
+
+ ** show stack trace for errors in command line and startup files (bug #49346)
+
+ ** interp1.m: Return NA for all columns which are out of bounds (bug #51030)
+
+ ** use idx_type for dimensions instead of int (bug #50934)
+
+ ** show stack trace for wrong type arg errors (bug #50894)
+
+ ** let mouse selection of Qt figures update "currentfigure" (bug #50666)
+
+ ** disable qscintilla editor drag and drop so parent will handle it (Bug
+ #50559)
+
+ ** quadgk.m: Correct error messages which point to quadv (bug #50604)
+
+ ** set version on AppUserModelId (Bug #50428)
+
+ ** version-rcfile: Don't try to execute startup directory, only startup.m
+ (bug #50593)
+
+ ** dlmread: Return empty matrix when requested range is outside data
+ (bug #50102)
+
+ ** fix eigs for generalized nonsymmetric and shift-invert problems (bug #39573)
+
+ ** fix eigs for the generalized eigenvalue problem (bug #50546)
+
+ ** datetick.m: Fix uneven range bugs (bug #50493)
+
+ ** datenum.m: Correct calculation for fractional leap years (bug #50508)
+
+ ** datenum.m: Allow horizontal vectors of dates with fractional months
+ (bug #50508)
+
+ ** datenum.m: Accept legal input of vectors with fractional months (bug #50508)
+
+ ** fix the anchor position in the info text of the doc browser (bug #50422)
+
+ ** fix order of legend labels with plotyy axes (bug #50497)
+
+ ** correct hggroup plot legends for gnuplot toolkit, add legend demo 17 items
+ (bug #49341)
+
+ ** for gnuplot graphics toolkit, show only one key entry for errorbars
+ (bug #49260)
+
+ ** fix compilation of jit caused by cset d0562b3159c7 (bug #50398)
+
+ ** remove inline keyword on file_stat destructor which breaks MacOS compilation
+ (bug #50234)
+
+Documentation bugs fixed:
+
+ ** playblocking.m: Correct documentation about start and limits inputs
+ (bug #51217)
+
+ ** fix eig output argument description (bug #50524)
+
+ ** remove backslashes before double quotes in m-file docstrings (bug #52870)
+
+ ** tweaks to use single quotes instead of double quotes (bug #52870)
+
+ ** correct fieldname of returned struct in ver (bug #52845)
+
+ ** cleanup @code example in Appendix on test functions (bug #52852)
+
+ ** fixes for signal, image, audio, and OOP chapters (bug #52844)
+
+ ** fix issues in geometry, polynomial, and interpolation chapters (bug #52835)
+
+ ** fix TeX documentation for qp and clarify size of inputs (bug #52829)
+
+ ** correct errors in Diagonal matrix chapter of manual (bug #52814)
+
+ ** replace @math{1e^{XXX}} sequences with raw 1eXXX (bug #52827)
+
+ ** use '...' rather than deprecated '\' for line continuation (bug #52828)
+
+ ** make documentation Sec 26.1 more consistent and Sec 25.4 clearer
+ (bug #52685)
+
+ ** documentation fixes for linspace, logspace, lookup (bug #52785)
+
+ ** atan2d.m: Correct documentation to match atan docstring (bug #52786)
+
+ ** small tweaks to fplot and surfnorm docstrings (bug #52761)
+
+ ** rewrite documentation for Advanced Indexing (bug #52723)
+
+ ** delete extra ']' in scanf docstring (bug #52742)
+
+ ** fix mistaken use of space between function and '(' in documentation
+ (bug #52723)
+
+ ** fix various inconsistencies in manual (bug #52712)
+
+ ** fix typo in cset 8354b505ad6b (bug #52702)
+
+ ** fix inconsistencies with char, strvcat, strread docstrings (bug #52702.
+
+ ** explain Matlab compatibility of fopen modes (bug #52644)
+
+ ** update documentation for keywords to include classdef statements
+ (bug #52591)
+
+ ** fix documentation of third input to lsode() (bug #52664)
+
+ ** clarify quiver/quiver3 documentation when a linestyle is given (bug #52608)
+
+ ** new section about classdef classes with example (bug #44590)
+
+ ** correct surface plot explanation of meshgridded results of 1 input
+ (bug #52536)
+
+ ** fix definition of Delaunay triangulation in docstrings (bug #52416)
+
+ ** accumarray.m: Add '@' to function handles in docstring (bug #52418)
+
+ ** update manual to explain \deg and \circ symbols (bug #52287)
+
+ ** correct documentation for randg (bug #52118)
+
+ ** add documentation about PCRE library regexp stack overflow (bug #51589)
+
+ ** play.m: Correct documentation about start and limits inputs (bug #51217)
+
+ ** redo docstring for qz (bug #50846)
+
+ ** describe optional install dependencies PortAudio and SUNDIALS (bug #50513)
+
+ ** update CITATION date, version, and permalink to manual (bug #47058)
+
+
+Summary of bugs fixed for version 4.2.1 (2017-02-22):
+----------------------------------------------------
+
+Using the bug numbers listed below, find bug reports on the web using
+the URL https://savannah.gnu.org/bugs/?NNNNN
+
+ ** guarantee returning std::string from tilde_expand functions (bug #50234)
+
+ ** workaround segfault in file_stat (bug #50234)
+
+ ** genpropdoc.m: document more graphics properties (bug #50337)
+
+ ** always fork and exec when starting the gui (bug #49609)
+
+ ** print.m: fix regression with -append option (bug #50318)
+
+ ** don't display legend, colorbar, and annotation axes coordinates
+ (bug #50272)
+
+ ** qp.m: Fix regression with incorrect vector dimensions (bug #50067)
+
+ ** prevent infinite loop in global documentation search (bug #50177)
+
+ ** connect execute command signal in editor constructor (bug #50171)
+
+ ** connect editors execute command signal to the required slot (bug #50171)
+
+ ** check if input is class method before declaring it unimplemented
+ (patch #9238) (bug #49694)
+
+ ** workaround segfault when an error occurs while printing (bug #49779)
+
+ ** axis.m: Do not set plotboxaspectratio to 0 (bug #49755)
+
+ ** don't rethrow exception in destructor (bug #49304)
+
+ ** rethrow octave::exit_exception (bug #49304)
+
+ ** update appdata.xml to follow conventions (bug #49952)
+
+ ** mexproto.h (mxAssert, mxAssertS): ensure operator precedence (bug #50050)
+
+ ** calculate error in solution for ode solvers correctly (bug #49950)
+
+ ** use GetModuleFileName for getting octave path in windows (bug #48671)
+
+ ** use C++ updaters for labels color (bug #49980)
+
+ ** distinguish elements vs. bytes in fread (bug #49699)
+
+ ** move frame2im and im2frame to image/ directory (bug #49939)
+
+ ** fix undefined return argument for more than 2 outputs from ode solver
+ (bug #49890)
+
+ ** fix inv for hermitian matrices (bug #49904)
+
+ ** fix gzip for certain types of gzip files (bug #49760)
+
+ ** fix typo in liboctave version info (bug #49860)
+
+ ** initialize ODE Event function with start time (bug #49846)
+
+ ** allow configure test to succeed without implicit fcn decls (bug #49782)
+
+ ** allow external docstrings from .oct files to be found again (bug #49687)
+
+ ** don't require semicolon between property list elements (bug #49819)
+
+ ** display.m: Correctly display output for non-class objects
+ (bug #49753, #49794)
+
+ ** don't run publish.tst unless OSMESA or gnuplot are available (bug #49767)
+
+ ** find help for function aliases again (bug #49687)
+
+ ** legend.m: backport cset 7184b4516a68 (bug #49675)
+
+ ** preserve lasterror info on rethrow (bug #49642)
+
+ ** norm: fix error in input argument validation leading to segfault
+ (bug #49634)
+
+Documentation bugs fixed:
+
+ ** overhaul Java interface description (bug #50299)
+
+ ** add documentation for hex and binary prefix and _ separator
+ (bug #50305, #50334)
+
+ ** fix build of docs broken in sub2ind (bug #50348)
+
+ ** version.m: document that "-release" returns an empty string (bug #50294)
+
+ ** remove trailing "\n\" from sleep and usleep docstrings (bug #50301)
+
+ ** expand documentation for cast() (bug #50201)
+
+ ** correct two entries in Table 34.1 (bug #50203)
+
+ ** oop.txi: Improve table formatting (bug #50203)
+
+ ** fix '##' in middle of docstring/comment lines (bug #50145)
+
+ ** reword documentation about subplots in 15.2.4 (bug #50148)
+
+ ** update unimplemented list of functions and where to find them
+ (bug #50098)
+
+ ** compare_plot_demos: fix HTML syntax, simplify output, remove
+ external deps (bug #49709)
+
+ ** add more depth to explanation of '~' function argument (bug #49444)
+
+ ** correct documentation for javaclasspath file (bug #49873)
+
+ ** small fixes to docstrings (bug #49733)
+
+ ** change text describing demo plots to reflect new ColorOrder (bug #49288)
+
+Other bugs fixed:
+
+ ** add missing classdef test files (bug #49819)
+
+
+Summary of important user-visible changes for version 4.2 (2016-11-13):
+----------------------------------------------------------------------
+
+ ** The parser has been extended to accept, but ignore, underscore
+ characters in numbers. This facilitates writing more legible code
+ by using '_' as a thousands separator or to group nibbles into bytes
+ in hex constants.
+
+ Examples: 1_000_000 == 1e6 or 0xDE_AD_BE_EF
+
+ ** The parser has been extended to understand binary numbers which
+ begin with the prefix '0b' or '0B'. The value returned is Octave's
+ default numeric class of double, not at unsigned integer class.
+ Therefore numbers greater than flintmax, i.e., 2^53, will lose some
+ precision.
+
+ Examples: 0b101 == 5 or 0B1100_0001 == 0xC1
+
+ ** gnuplot 4.4 is now the minimum version supported by Octave.
+
+ ** The default set of colors used to plot lines has been updated to be
+ compatible with Matlab's new default color scheme. The line plot
+ color scheme can be set with the axes property "ColorOrder".
+
+ ** The default colormap is now set to "viridis" which is also the
+ default colormap in matplotlib. This new colormap fixes some of the
+ main issues with the old default colormap "jet" such as its bad
+ "luminance profile" and is also more similar to Matlab's new default
+ colormap "parula".
+
+ ** The colormap function no longer supports the input argument "list"
+ to show built-in colormaps. Use "help colormap" to find the
+ built-in colormaps.
+
+ ** The graphics command "hold on" now ensures that each new plot added
+ to an existing plot has a different color or linestyle according to
+ the "ColorOrder" and/or "LineStyleOrder" properties. This is
+ equivalent to the old command "hold all" and was made for Matlab
+ compatibility. Existing code *may* produce differently colored
+ plots if it did not specify the color for a plot and relied on each
+ new plot having the default first color in the "ColorOrder"
+ property.
+
+ ** When starting, Octave now looks in the function path for a file
+ startup.m and executes any commands found there. This change was
+ made to accommodate Matlab users. Octave has it's own configuration
+ system based on the file .octaverc which is preferred.
+
+ ** Octal ('\NNN') and hex ('\xNN') escape sequences in single quoted
+ strings are now interpreted by the function do_string_escapes().
+ The *printf family of functions now supports octal and hex escape
+ sequences in single-quoted strings for Matlab compatibility.
+
+ ** Special octal and hex escape sequences for the pattern and
+ replacement strings in regular expressions are now interpreted for
+ Matlab compatibility.
+
+ octal: '\oNNN' or '\o{NNN}'
+ hex : '\xNN' or '\x{NN}'
+
+ ** Unknown escape sequences in the replacement string for regexprep are
+ now substituted with their unescaped version and no warning is
+ emitted. This change was made for Matlab compatibility.
+
+ Example: regexprep ('a', 'a', 'x\yz')
+ => 'xyz'
+
+ ** mkfifo now interprets the MODE argument as an octal, not decimal,
+ integer. This is consistent with the equivalent shell command.
+
+ ** linspace now returns an empty matrix if the number of requested
+ points is 0 or a negative number. This change was made to be
+ compatible with Matlab releases newer than 2011. In addition,
+ Octave no longer supports matrix inputs for A or B.
+
+ ** The cov function now returns the complex conjugate of the result
+ from previous versions of Octave. This change was made for
+ compatibility with Matlab.
+
+ ** condest now works with a normest1 compatible syntax.
+
+ ** The griddata function no longer plots the interpolated mesh if no
+ output argument is requested, instead the vector or array of
+ interpolated values is always returned for Matlab compatibility.
+
+ ** The new function "light" and the corresponding graphics object
+ provide light and shadow effects for patch and surface objects.
+
+ ** The surfnorm function now returns unnormalized (magnitude != 1)
+ normal vectors for compatibility with Matlab.
+
+ ** The normal vectors returned from isonormals have been reversed to
+ point towards smaller values for compatibility with Matlab.
+
+ ** The quadl function now uses an absolute, rather than relative,
+ tolerance for Matlab compatibility. The default tolerance is 1e-6
+ which may result in lower precision results than previous versions
+ of Octave which used eps as the relative tolerance. The quadl
+ function has also been extended to return a second output with the
+ total number of function evaluations.
+
+ ** The textscan function is now built-in and is much faster and much
+ more Matlab-compatible than the previous m-file version.
+
+ ** Dialog boxes--errordlg, helpdlg, inputdlg, listdlg, msgbox,
+ questdlg, and warndlg--now exclusively use Qt for rendering.
+ Java based versions have been removed.
+
+ ** The axes properties "TitleFontSizeMultiplier" and "TitleFontWeight"
+ are now implemented which control the default appearance of text
+ created with title().
+ The axes property "LabelFontSizeMultiplier" is now implemented
+ which controls the default appearance of text created with
+ xlabel(), ylabel(), or zlabel().
+
+ ** The graphics property "box" for axes now defaults to "off".
+ To obtain equivalent plots to previous versions of Octave use
+ set (0, "DefaultAxesBox", "on");
+ in your .octaverc file.
+
+ ** The graphics property "boxstyle" has been implemented. The default
+ is "back" which draws only the back planes in a 3-D view. If the
+ option is "full" then all planes are drawn.
+
+ ** The graphics property "erasemode" has been hidden, and will
+ eventually be removed. This property has also been removed
+ from Matlab, and was never implemented in Octave.
+
+ ** The graphics property "graphicssmoothing" for figures now controls
+ whether anti-aliasing will be used for lines. The default is "on".
+
+ ** The value "zero" for the axes properties "xaxislocation" and
+ "yaxislocation" has been deprecated and will be removed from
+ Octave 5. Use "origin" instead.
+
+ ** The publish function allows easy publication of Octave script files
+ in HTML or other formats, including figures and output created by
+ this script. It comes with its counterpart grabcode, which lets one
+ literally grab the HTML published code from a remote website, for
+ example.
+
+ ** The value of the MEX variable TrapFlag now defaults to 0, which will
+ cause Octave to abort execution of a MEX file and return to the
+ prompt if an error is encountered in mexCallMATLAB.
+
+ ** The MEX API now includes the function mexCallMATLABWithTrap. This
+ function will not abort if an error occurs during mexCallMATLAB, but
+ instead will return execution to the MEX function for error
+ handling.
+
+ ** The MEX API functions for input validation that begin with "mxIs"
+ (e.g., mxIsDouble, mxIsEmpty, etc.) now return type bool rather than
+ type int.
+
+ ** The functions mxAssert and mxAssertS for checking assertions have
+ been added. In order to avoid a performance penalty they are only
+ compiled in to debug versions of a MEX file, i.e., that are produced
+ when the '-g' option is given to mex or mkoctfile.
+
+ ** Other new MEX API functions include mexEvalStringWithTrap,
+ mxIsScalar, mxCreateUninitNumericArray, mxCreateUninitNumericMatrix.
+
+ ** Other new functions added in 4.2:
+
+ audioformats
+ camlight
+ condeig
+ deg2rad
+ dialog
+ evalc
+ hash
+ im2double
+ isocaps
+ lighting
+ localfunctions
+ material
+ normest1
+ ode23
+ ode45
+ odeget
+ odeplot
+ odeset
+ padecoef
+ profexport
+ psi
+ rad2deg
+ reducepatch
+ reducevolume
+ smooth3
+ uibuttongroup
+
+ ** Deprecated functions.
+
+ The following functions have been deprecated in Octave 4.2 and will
+ be removed from Octave 5 (or whatever version is the second major
+ release after 4.2):
+
+ Function | Replacement
+ ---------------------|------------------
+ bitmax | flintmax
+ mahalanobis | mahal in Octave Forge statistics pkg
+ md5sum | hash
+ octave_config_info | __octave_config_info__
+ onenormest | normest1
+ sleep | pause
+ usleep | pause
+ wavread | audioread
+ wavwrite | audiowrite
+
+ ** The following functions were deprecated in Octave 3.8 and have been
+ removed from Octave 4.2.
+
+ default_save_options java_new
+ gen_doc_cache java_unsigned_conversion
+ interp1q javafields
+ isequalwithequalnans javamethods
+ java_convert_matrix re_read_readline_init_file
+ java_debug read_readline_init_file
+ java_invoke saving_history
+
+ ** The global error_state variable in Octave's C++ API has been
+ deprecated and will be removed in a future version. Now the error
+ and print_usage functions throw an exception
+ (octave::execution_exception) after displaying the error message.
+ This makes the error and print_usage functions in C++ work more like
+ the corresponding functions in the scripting language.
+
+ ** The default error handlers in liboctave have been updated to use
+ exceptions. After displaying an error message they no longer return
+ control to the calling program. The error handler function can be
+ customized through the global variables
+ "current_liboctave_error_handler" and
+ "current_liboctave_error_with_id_handler". If a programmer has
+ installed their own custom error handling routines when directly
+ linking with liboctave then these must be updated to throw an
+ exception and not return to the calling program.
+
+ ** The system for common errors and warnings has been renamed from
+ gripe_XXX to either err_XXX if error is called or warn_XXX if
+ warning is called. The gripe_XXX functions are deprecated and will
+ be removed in version 5.
+
+ ** New configure option, --enable-address-sanitizer-flags, to build
+ Octave with memory allocator checks (similar to those in valgrind)
+ built in.
+
+Summary of important user-visible changes for version 4.0 (2015-05-23):
+----------------------------------------------------------------------
+
+ ** A graphical user interface is now the default when running Octave
+ interactively. The start-up option --no-gui will run the familiar
+ command line interface, and still allows use of the GUI dialogs and
+ qt plotting toolkit. The option --no-gui-libs runs a minimalist
+ command line interface that does not link with the Qt libraries and
+ uses the fltk toolkit for plotting.
+
+ ** Octave now uses OpenGL graphics with Qt widgets by default. If
+ OpenGL libraries are not available when Octave is built, gnuplot is
+ used. You may choose to use the fltk or gnuplot toolkit for
+ graphics by executing the command
+
+ graphics_toolkit ("fltk")
+ OR
+ graphics_toolkit ("gnuplot")
+
+ Adding such a command to your ~/.octaverc file will set the default
+ for each session.
+
+ ** A new syntax for object oriented programming termed classdef has
+ been introduced. See the manual for more extensive documentation of
+ the classdef interface.
+
+ New keywords:
+
+ classdef endclassdef
+ enumeration endenumeration
+ events endevents
+ methods endmethods
+ properties endproperties
+
+ ** New audio functions and classes:
+
+ audiodevinfo audioread sound
+ audioinfo audiorecorder soundsc
+ audioplayer audiowrite
+
+ ** Other new classes in Octave 4.0:
+
+ audioplayer inputParser
+ audiorecorder
+
+ ** Optional stricter Matlab compatibility for ranges, diagonal
+ matrices, and permutation matrices.
+
+ Octave has internal optimizations which use space-efficient storage
+ for the three data types above. Three new functions have been added
+ which control whether the optimizations are used (default), or
+ whether the data types are stored as full matrices.
+
+ disable_range disable_diagonal_matrix disable_permutation_matrix
+
+ All three optimizations are disabled if Octave is started with the
+ --braindead command line option.
+
+ ** The preference
+
+ do_braindead_shortcircuit_evaluation
+
+ is now enabled by default.
+
+ ** The preference
+
+ allow_noninteger_range_as_index
+
+ is now enabled by default and the warning ID
+
+ Octave:noninteger-range-as-index
+
+ is now set to "on" by default instead of "error" by default and "on"
+ for --traditional.
+
+ ** The "backtrace" warning option is now enabled by default. This
+ change was made for Matlab compatibility.
+
+ ** For compatibility with Matlab, the "ismatrix (x)" function now only
+ checks the dimension of "x". The old behavior of "ismatrix" is
+ obtained by "isnumeric (x) || islogical (x) || ischar (x)".
+
+ ** The nextpow2 function behavior has been changed for vector inputs.
+ Instead of computing `nextpow2 (length (x))', it will now compute
+ nextpow2 for each element of the input. This change is Matlab
+ compatible, and also prevents bugs for "vectors" of length 1.
+
+ ** polyeig now returns a row vector of eigenvalues rather than a matrix
+ with the eigenvalues on the diagonal. This change was made for
+ Matlab compatibility.
+
+ ** Interpolation function changes for Matlab compatibility
+
+ The interpolation method 'cubic' is now equivalent to 'pchip' for
+ interp1, interp2, and interp3. Previously, 'cubic' was equivalent
+ to 'spline' for interp2. This may produce different results as
+ 'spline' has continuous 1st and 2nd derivatives while 'pchip' only
+ has a continuous 1st derivative. The methods 'next' and 'previous'
+ have been added to interp1 for compatibility.
+
+ ** The delaunay function has been extended to accept 3-D inputs for
+ Matlab compatibility. The delaunay function no longer plots the
+ triangulation if no output argument is requested, instead, the
+ triangulation is always returned. The delaunay3 function which
+ handles 3-D inputs has been deprecated in favor of delaunay.
+
+ ** The trigonometric functions asin and acos return different phase
+ values from previous versions of Octave when the input is outside
+ the principal branch ([-1, 1]). If the real portion of the input is
+ greater than 1 then the limit from below is taken. If the real
+ portion is less than 1 then the limit from above is taken. This
+ criteria is consistent with several other numerical analysis
+ software packages.
+
+ ** The hyperbolic function acosh now returns values with a phase in the
+ range [-pi/2, +pi/2]. Previously Octave returned values in the
+ range [0, pi]. This is consistent with several other numerical
+ analysis software packages.
+
+ ** strfind changes when using empty pattern ("") for Matlab
+ compatibility
+
+ strfind now returns an empty array when the pattern itself is empty.
+ In previous versions of Octave, strfind matched at every character
+ location when the pattern was empty.
+
+ NEW
+ strfind ("abc", "") => []
+ OLD
+ strfind ("abc", "") => [1, 2, 3, 4]
+
+ ** Integer formats used in the printf family of functions now work for
+ 64-bit integers and are more compatible with Matlab when printing
+ non-integer values. Now instead of truncating, Octave will switch
+ the effective format to '%g' in the following circumstances:
+
+ * the value of an integer type (int8, uint32, etc.) value exceeds
+ the maximum for the format specifier. For '%d', the limit is
+ intmax ('int64') and for '%u' it is intmax ('uint64').
+
+ * round(x) != x or the value is outside the range allowed by the
+ integer format specifier.
+
+ There is still one difference: Matlab switches to '%e' and Octave
+ switches to '%g'.
+
+ ** The functions intersect, setdiff, setxor, and union now return a
+ column vector as output unless the input was a row vector. This
+ change was made for Matlab compatibility.
+
+ ** The inpolygon function now returns true for points that are within
+ the polygon OR on it's edge. This change was made for Matlab
+ compatibility.
+
+ ** The archive family of functions (bzip2, gzip, zip, tar) and their
+ unpacking routines (bunzip2, gunzip, unzip, untar, unpack) have been
+ recoded. Excepting unpack, the default is now to place files in the
+ same directory as the archive (on unpack) or as the original files
+ (on archiving).
+
+ ** Qt and FLTK graphics toolkits now support offscreen rendering on
+ Linux. In other words, print will work even when the figure
+ visibility is "off".
+
+ ** Z-order stacking issues with patches, grid lines, and line object
+ plot markers for on screen display and printing have all been
+ resolved. For 2-D plots the axis grid lines can be placed on top of
+ the plot with set (gca, "layer", "top").
+
+ ** The patch graphic object has been overhauled. It now produces
+ visual results equivalent to Matlab even for esoteric combinations
+ of faces/vertices/cdata.
+
+ ** The polar() plot function now draws a circular theta axis and radial
+ rho axis rather than using a rectangular x/y axis.
+
+ ** linkprop has been completely re-coded for performance and Matlab
+ compatibility. It now returns a linkprop object which must be
+ stored in a variable for as long as the graphic objects should
+ remain linked. To unlink properties use 'clear hlink' where hlink
+ is the variable containing the linkprop object.
+
+ ** isprime has been extended to operate on negative and complex inputs.
+
+ ** xor has been extended to accept more than two arguments in which
+ case it performs cumulative XOR reduction.
+
+ ** The following functions now support N-dimensional arrays:
+
+ fliplr flipud rot90 rectint
+
+ ** The new warning ID "Octave:data-file-in-path" replaces the three
+ previous separate warning IDs "Octave:fopen-file-in-path",
+ "Octave:load-file-in-path", and "Octave:md5sum-file-in-path".
+
+ ** The warning ID Octave:singular-matrix-div has been replaced by
+ Octave:nearly-singular-matrix and Octave:singular-matrix.
+
+ ** The warning ID Octave:matlab-incompatible has been replaced by
+ Octave:language-extension to better reflect its meaning.
+
+ ** The warning ID Octave:broadcast has been removed. Instead automatic
+ broadcasting will throw an Octave:language-extension warning. This
+ warning ID is used for broadcasting as well as other features not
+ available in Matlab.
+
+ ** Other new functions added in 4.0:
+
+ annotation
+ bandwidth
+ cubehelix
+ dir_in_loadpath
+ flip
+ frame2im
+ get_home_directory
+ hgload
+ hgsave
+ ichol
+ ilu
+ im2frame
+ isbanded
+ isdiag
+ isstudent
+ istril
+ istriu
+ javachk
+ jit_failcnt
+ linkaxes
+ lscov
+ metaclass
+ numfields
+ open
+ ordschur
+ pan
+ qmr
+ rotate
+ rotate3d
+ sylvester
+ unsetenv
+ validateattributes
+ zoom
+
+ ** inline() scheduled for eventual deprecation by Matlab
+
+ Functions created through the use of inline are scheduled for
+ deprecation by Matlab. When this occurs Octave will continue to
+ support inline functions for an indeterminate amount of time before
+ also removing support. All new code should use anonymous functions
+ in place of inline functions.
+
+ ** Deprecated functions.
+
+ The following functions have been deprecated in Octave 4.0 and will
+ be removed from Octave 4.4 (or whatever version is the second major
+ release after 4.0):
+
+ Function | Replacement
+ ---------------------|------------------
+ bicubic | interp2
+ delaunay3 | delaunay
+ dump_prefs | individual preference get/set routines
+ find_dir_in_path | dir_in_loadpath
+ finite | isfinite
+ fmod | rem
+ fnmatch | glob or regexp
+ gmap40 | ----
+ loadaudio | audioread
+ luinc | ilu or ichol
+ mouse_wheel_zoom | mousewheelzoom axes property
+ nfields | numfields
+ octave_tmp_file_name | tempname
+ playaudio | audioplayer
+ saveaudio | audiowrite
+ syl | sylvester
+ usage | print_usage
+
+ allow_noninteger_range_as_index
+ do_braindead_shortcircuit_evaluation
+ setaudio
+
+ ** The following functions were deprecated in Octave 3.8 and will be
+ removed from Octave 4.2 (or whatever version is the second major
+ release after 3.8):
+
+ default_save_options java_new
+ gen_doc_cache java_unsigned_conversion
+ interp1q javafields
+ isequalwithequalnans javamethods
+ java_convert_matrix re_read_readline_init_file
+ java_debug read_readline_init_file
+ java_invoke saving_history
+
+ ** The following functions were deprecated in Octave 3.6 and have been
+ removed from Octave 4.0.
+
+ cut polyderiv
+ cor shell_cmd
+ corrcoef studentize
+ __error_text__ sylvester_matrix
+ error_text
+
+ ** The following keywords were deprecated in Octave 3.8 and have been
+ removed from Octave 4.0
+
+ static
+
+ ** The following configuration variables were deprecated in Octave 3.8
+ and have been removed from Octave 4.0
+
+ CC_VERSION (now GCC_VERSION)
+ CXX_VERSION (now GXX_VERSION)
+
+ ** The internal function atan2 of the sparse matrix class has been
+ deprecated in Octave 4.0 and will be removed from Octave 4.4 (or
+ whatever version is the second major release after 4.0). Use the
+ Fatan2 function with sparse inputs as a replacement.
+
+ ** The internal class Octave_map was deprecated in Octave 3.8 and has
+ been removed from Octave 4.0. Replacement classes are octave_map
+ (struct array) or octave_scalar_map for a single structure.
+
+ ** Octave now has OpenMP enabled by default if the system provides a
+ working OpenMP implementation. This allows oct-file modules to take
+ advantage of OpenMP if desired. This can be disabled when building
+ Octave with the configure option --disable-openmp.
+
+ ** Octave now automatically truncates intermediate calculations done
+ with floating point values to 64 bits. Some hardware math
+ co-processors, such as the x87, maintain extra precision, but this
+ leads to disagreements in calculations when compared to reference
+ implementations in software using the IEEE standard for double
+ precision. There was no measurable performance impact to this
+ change, but it may be disabled with the configure option
+ --disable-float-truncate. MinGW and Cygwin platforms, as well as
+ GCC compilers >= 5.0 require this feature. Non-x87 hardware, or
+ hardware using SSE options exclusively, can disable float truncation
+ if desired.
+
+---------------------------------------------------------
+
+See NEWS.3 for old news.
diff -r 7ecd07721cca -r 86ddba86efbe etc/NEWS.5
--- a/etc/NEWS.5 Tue Dec 07 16:20:15 2021 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,443 +0,0 @@
-Summary of bugs fixed for version 5.2.0 (2020-01-31):
-----------------------------------------------------
-
-See: https://www.octave.org/news/release/2020/01/31/octave-5.2.0-released.html
-
-For (bug #XXXXX) see https://savannah.gnu.org/bugs/?XXXXX
-
-### Improvements
-
-- Lock amd and symbfact to avoid segmentation fault with SuiteSparse (bug #57435)
-- Fix segfault when calculating patch vertex normals (bug #57353)
-- Fix segfault in constructing patch normals for lighting (bug #57353)
-- mat2str.m: Fix for logical matrix (add `transpose`).
-- improve file equality check for MS Windows (bug #55161)
-- ismember.m: Fix second return argument when values are complex (bug #52437)
-- findobj.m: Fix typo and correctly handle numeric properties (bug #57030)
-- Correctly display integer types with format hex (bug #56966)
-- Cast `winqueryreg` `REG_DWORD` types to `DWORD` (bug #56703)
-- Fix numerous errors in `audiowrite` / `audioread` (bug #56889)
-- print.m: Pass quoted path to `octave-svgconvert` (bug #56768)
-- dir.m: Fix occasionally returning incorrect folder field (bug #55448)
-- Stop segfault when calling 3-input form of `diag` with cell arrays (bug #56711)
-- improve message for setting breakpoint in nonexistent function (bug #56157)
-- Use framebuffer object for printing invisible Qt figures on mac (bug #55268)
-- Escape backslash characters in `EPS` output (bug #56448)
-- Use replacement characters to display non UTF-8 strings in figures (bug #55974)
-- inputrc: Add warning about modification (bug #56079)
-- documentation.cc (global_search): just return if query string is empty (bug #56388)
-- Default (c)transpose for old style class arrays (bug #56323)
-- Always reserve at least 1 element of storage for sparse matrices (bug #56232)
-- Don't segfault at exit after reading malformed HDF5 file (bug #56149)
-- Fix pause() with no arguments called on Windows (bug #55943)
-- refactor minimum eigenvalue index search in `qp` (bug #56037)
-- qp: fix obscure corner case when calculating `qp` caused by a typo (bug #56037)
-- use `std::streampos` instead of `std::ios::streampos` (patch #9782).
-- fix `pause` and `kbhit` with glibc 2.28 end-of-file state behavior (bug #55029)
-- Fix return of left-handed vectors when inputs are complex (bug #56026)
-- waitbar.m: Fix hang when using `createcancelbtn` property (bug #55963)
-- shading.m: Fix unexpected error when multiple `hggroups` present (bug #55993)
-- dec2base.m: Correctly handle zero matrix input (bug #56005)
-- eliminate duplicate graphics callback object stack (bug #55908)
-- Improve performance when closing figures (bug #55908)
-- Reduce time to process `pkg -forge list` by 30X (bug #39479)
-- Feed `fig2dev` with PDF files converted from svg (bug #55906)
-- Improve error checking for `iconv_open`.
-- poly.m: fix the fix for input of complex conjugate pairs (bug #53897)
-- mkoctfile: use the `TMPDIR` environment variable if set (bug #55814)
-- line.m: Fix creation of unwanted axes (bug #55840)
-- Accept 4-input form for quiver3 (bug #55570)
-- pkg.m: restore installing packages from zip archives (bug #55788)
-- axis.m: Fix issues with `equal` argument (bug #55619, bug #55614, bug #55574,
- bug #55514, bug #54848, bug #53724, bug #53504, bug #53336, bug #51938, bug #50356).
-- ordeig.m: Do not fail on 1x1 matrices (bug #55779)
-
-### GUI
-
-- fix editors search and replace in selection (bug #56405)
-- undo a complete replace all action in the editor (bug #56405)
-- fix missing unlock of mutex when gui editor is not present (bug #56097)
-- prevent unnamed editor tab from being closed by `rmdir` (bug #55888)
-- prevent editor from closing files that are not affected by `rmdir` (bug #55823)
-- fix creating keyword files for editor autocompletion (bug #55835)
-- fix dock widget position when being dragged out of the main window (bug #55704)
-
-### Build system / Tests
-
-- configure: prevent overlinking when SUNDIALS is disabled (bug #55956)
-- use QtCore and Qt5Gui modules instead of Qt5OpenGL (bug #55735)
-- make building with Qt4 QGLWidget work again (bug #55735)
-- build: adapt mk-qthelp.pl to changes in Texinfo 6.7.
-- BIST should not rely on the current directory to be writable.
-- bp-table.cc: Fix test.
-- maint: Make old style class tests Matlab compatible.
-- Add BIST tests for `unlink` (bug #56097)
-
-### Documentation
-
-- fix many spelling errors (bug #57613)
-- help: improve documentation for the `startup.m` user script.
-- avoid conflict with @seealso macro in Texinfo 6.6 (bug #55952)
-- mk-doc-cache.pk: Also translate `@seealso` here. (bug #55952)
-- __makeinfo__.m: Also translate `@seealso` here (bug #55952)
-- polar.m: Document that input is expected to be in radians (bug #57052)
-- gallery.m: Fix typo in docstring for poisson (bug #56267)
-- Add 1024x1024 Octave logo icon (bug #55836)
-- add `.editorconfig` for default file encoding and indentation.
-- octave.doap: Copy localized (short) description over from appdata (bug #55279)
-- org.octave.Octave.appdata.xml: Add German and French description (bug #55279)
-- languages/*.ts: updated language files (bug #55772)
-- quiver3.m: Fix texinfo typo in docstring from cset f7b10bd40045.
-- doc: fix `.` Operator Index entry to build with Texinfo 6.7.
-- doc: improve example of using global variables from oct-files.
-- doc: Create en-dashes and em-dashes correctly in documentation.
-- doc: expand `page_output_immediately` doc string, mention `page_screen_output`.
-- doc: Clarify documentation of `history_file` (bug #57027)
-- doc: Improve documentation for `get_help_text`, `get_help_text_from_file`.
-- doc: Add documentation for `GNUTERM` variable used with gnuplot (bug #56906)
-- doc: Improve `contour` docstring example (bug #56849)
-- doc: Add example to show limitations of the given BLAS integer size.
-- doc: Improve documentation of sparse functions.
-- doc: Improve spelling of `bicgstab` (bug #56812)
-- doc: Remove `Map` functions `keys`, `values`, `remove` from unimplemented list (bug #56718)
-- doc: Add function index entry for alias `inverse` (bug #56629)
-- add content rating declaration to AppStream metadata (bug #56466)
-- doc: Remove stray semicolons from `pie`, `pie3` calling forms.
-- doc: Redo documentation for `rats` function.
-- doc: Specify `position` property for text objects is a three-element vector (bug #56303)
-- doc: state that Octave can only load HDF5 files created by itself (bug #56148)
-- doc: Fix names of options in `issorted` (bug #56087)
-- doc: Small fixes to `mat2cell` and `polyeig` docstrings (bug #55985)
-- doc: Improve example code for using `-pdflatexstandalone` (bug #55945)
-- doc: Refer to "root object" rather than "root figure object".
-- doc: Place cross-reference from list of graphics object properties back to object (bug #46076)
-- doc: document the newline character in warning messages (bug #49158)
-- doc: pkg versions can be more general than "x.y.z" (bug #55798)
-
-
-Summary of important user-visible changes for version 5 (2019-02-23):
---------------------------------------------------------------------
-
-See: https://www.octave.org/NEWS-5.1.html
-
-### General improvements
-
-- The Octave plotting system now supports high resolution screens,
- i.e., those with greater than 96 DPI which are referred to as
- HiDPI/Retina monitors.
-
-- Unicode character support for files and folders in Windows.
-
-- A new core function `movfun` will apply a function to a sliding
- window of arbitrary size on a dataset and accumulate the results.
- Many common cases have been implemented using the naming
- scheme `movXXX` where `XXX` is the function that will be applied.
- For example, the moving average over a dataset is `movmean`.
- New moving window functions:
-
- `movfun` `movslice`
- `movmad` `movmax` `movmean` `movmedian` `movmin` `movprod`
- `movstd` `movsum` `movvar`
-
-- The `fsolve` function has been tweaked to use larger step sizes when
- calculating the Jacobian of a function with finite differences.
- This leads to faster convergence.
-
-- The `ranks` function has been recoded for performance and is now 25X
- faster. In addition, it now supports a third argument that specifies
- how to resolve the ranking of tie values.
-
-- The function `randi` has been recoded to produce an unbiased (all
- results are equally likely) sample of integers. This may produce
- different results in existing code. If it is necessary to reproduce
- the exact random integer sequence as in previous versions use
-
- `ri = imin + floor ((imax - imin + 1) * rand ());`
-
-- The function `isdefinite` now returns `true` or `false` rather than
- `-1`, `0`, or `1`. To test for a positive semi-definite matrix (old
- output of `0`) check whether the following two conditions hold:
-
- `isdefinite (A) => 0` and `isdefinite (A + 5*TOL, TOL) => 1`
-
-- The `intmax`, `intmin`, and `flintmax` functions now accept a variable
- as input. Existing code to query the range of an existing variable can
- be simplified by removing the call to `class` that was previously
- required. For example defining the variable `x = int8 (3)` in the
- workspace, calls like
-
- `range = [ intmin(class(x)), intmax(class(x)) ]`
-
- can in Octave 5 be simplified to `range = [ intmin(x), intmax(x) ]`.
-
-- The path handling functions no longer perform variable or brace
- expansion on path elements and Octave's load-path is no longer
- subject to these expansions.
-
-- A new printing device is available, `"-ddumb"`, which produces ASCII
- art for plots. This device is only available with the gnuplot toolkit.
-
-- The `msgbox` function has changed in two respects: the default WindowStyle
- is now `"non-modal"`, and the default interpreter for the message is now
- `"tex"`. Both WindowStyle and Interpreter can be controlled by passing an
- option struct argument.
-
-### Dependencies
-
-- The GUI requires Qt libraries. The minimum Qt4 version supported is
- Qt4.8. Qt5 of any version is preferred.
-
-- The OSMesa library is no longer used. To print invisible figures
- when using OpenGL graphics, the Qt `QOFFSCREENSURFACE` feature must be
- available and you must use the qt graphics toolkit.
-
-- The FFTW library is now required to perform FFT calculations.
- The FFTPACK sources have been removed from Octave.
-
-
-### Matlab compatibility
-
-- The determination of an object's dimensions, size, and shape by the
- functions `ndims`, `rows`, `columns`, `isscalar`, `isvector`,
- `isrow`, `iscolumn`, `ismatrix`, and `issquare` now fully depends
- on the function size. Thus, any user-defined object can ensure correct
- treatment by the aforementioned functions by properly overloading the
- `size` function.
-
-- The functions `issymmetric` and `ishermitian` accept an option
- `"nonskew"` or `"skew"` to calculate the symmetric or skew-symmetric
- property of a matrix. Performance has also been increased.
-
-- The `issorted` function now uses a direction option of `"ascend"`
- or `"descend"`. Change all uses of `"ascending"` and `"descending"`
- in existing code to the new options.
-
-- The `strncmp` and `strncmpi` functions now return `true` if the two
- input strings match, even though the number of characters specified
- by `n` exceeds the string length. For Example:
-
- `strncmp ("abc", "abc", 100)`
-
- returns `true` in Octave 5 and `false` in older versions of Octave.
-
-- The `str2func` function no longer accepts a second `"global"` argument.
- This argument was typically used to allow functions that accept
- function names as arguments to avoid conflicts with subfunctions or
- nested functions. Instead, it's best to avoid this situation
- entirely and require users to pass function handles rather than
- function names.
-
-- Using `clear` with no arguments now removes only local variables
- from the current workspace. Global variables will no longer be
- visible, but they continue to exist in the global workspace and
- possibly other workspaces such as the base workspace.
-
-
-#### Nonlinear Equations
-
-Several default solver options have been changed to be Matlab compatible.
-This *may* result in existing code producing different results.
-
-- `fsolve`
-
- Option | New Default | Old Default
- ---------------|------------------|-------------
- `FinDiffType` | `"forward"` | `"central"`
- `MaxFunEvals` | `100*length(x0)` | `Inf`
- `TolFun` | `1e-6` | `1e-7`
- `TolX` | `1e-6` | `1e-7`
- `Updating` | `"off"` | `"on"`
-
-- `fminsearch`
-
- Option | New Default | Old Default
- ---------|-------------|------------
- `TolFun` | `1e-7` | `1e-4`
-
-- `fminbnd`
-
- Option | New Default | Old Default
- ---------------|-------------|------------
- `MaxFunEvals` | `500` | `Inf`
- `MaxIter` | `500` | `Inf`
- `TolX` | `1e-4` | `1e-8`
-
-- `fminunc`
-
- Option | New Default | Old Default
- ---------------|------------------|------------
- `FinDiffType` | `"forward"` | `"central"`
- `MaxFunEvals` | `100*length(x0)` | `Inf`
- `TolX` | `1e-6` | `1e-7`
- `TolFun` | `1e-6` | `1e-7`
-
-
-#### Graphic objects
-
-- Figure graphic objects have a new property `"Number"` which is
- read-only and will return the handle (number) of the figure.
- However, if the property `"IntegerHandle"` has been set to `"off"`
- then the property will return an empty matrix `[]`.
-
-- Patch and surface graphic objects now use the `"FaceNormals"` property
- for flat lighting.
-
-- `"FaceNormals"` and `"VertexNormals"` for patch and surface graphic
- objects are now calculated only when necessary to improve graphics
- performance. In order for any normals to be calculated the
- `"FaceLighting"` property must be set to `"flat"` (FaceNormals) or
- `"gouraud"` (VertexNormals), **and** a light object must be present
- in the axes.
-
-- The `"Margin"` property of `text`-objects has a new default of `3`
- rather than `2`.
-
-- Printing to raster formats (bitmaps like PNG or JPEG) now uses an
- OpenGL-based method by default. The print options `"-opengl"`
- (raster) and `"-painters"` (vector) have been added ("qt" toolkit
- only). The figure property `"renderer"` specifies which renderer to
- use. When the property `"renderermode"` is `"auto"` Octave will select
- `"-opengl"` for a raster output format and `"-painters"` for a vector
- output format.
-
-- A new print option `"-RGBImage"` has been added which captures the
- pixels of a figure as an image. This is similar to screen capture
- tools, except that print formatting options can be used to, for
- example, change the resolution or display the image in black and
- white.
-
-- Two new print options for page-based formats (PDF, PostScript) have
- been added. The `"-fillpage"` option will stretch the plot to occupy
- the entire page with 0.25 inch margins all around. The `"-bestfit"`
- option will expand the plot to take up as much room as possible on
- the page without distorting the original aspect ratio of the plot.
-
-- Printing using the `"-dtiff"` output device will now create compressed
- images using LZW compression. To produce uncompressed images use the
- `"-dtiffn"` device.
-
-
-### Legacy functions
-
-The following functions have been declared legacy functions which
-means they are obsolete and should not be used in any new code.
-Unlike deprecated functions, however, their removal from Octave has
-not yet been scheduled.
-
- Function | Replacement
- -----------------------|------------------
- `findstr` | `strfind`
- `flipdim` | `flip`
- `isdir` | `isfolder` or `dir_in_loadpath`
- `isequalwithequalnans` | `isequaln`
- `isstr` | `ischar`
- `setstr` | `char`
- `strmatch` | `strncmp` or `strcmp`
- `strread` | `textscan`
- `textread` | `textscan`
-
-
-### Deprecated functions and properties
-
-The following functions and graphics properties have been deprecated
-in Octave 5 and will be removed from Octave 7 (or whatever version
-is the second major release after 5):
-
-- Functions
-
- Function | Replacement
- -------------------------|-------------------
- `output_max_field_width` | `output_precision`
- `is_keyword` | `iskeyword`
-
-- Graphics properties
-
- Object | Property | Value
- -----------------|---------------|------------
- `text` | `fontangle` | `"oblique"`
- `uibuttongroup` | `fontangle` | `"oblique"`
- `uicontrol` | `fontangle` | `"oblique"`
- `uipanel` | `fontangle` | `"oblique"`
- `uitable` | `fontangle` | `"oblique"`
-
-- Specifying `legend` position with a numeric argument is deprecated.
- Use a string argument instead.
-
-- The environment variable used by `mkoctfile` for linker flags is now
- `LDFLAGS` rather than `LFLAGS`. `LFLAGS` is deprecated, and a warning
- is emitted if is used, but it will continue to work.
-
-
-### Removed functions and properties
-
-The following functions and properties were deprecated in Octave 4.2
-and have been removed from Octave 5.
-
-- Functions
-
- Function | Replacement
- -----------------------|------------------
- `bitmax` | `flintmax`
- `mahalanobis` | `mahal` in Octave Forge statistics pkg
- `md5sum` | `hash`
- `octave_config_info` | `__octave_config_info__`
- `onenormest` | `normest1`
- `sleep` | `pause`
- `usleep` | `pause`
- `wavread` | `audioread`
- `wavwrite` | `audiowrite`
-
-- Properties
-
- Object | Property | Value
- ------------|-------------------|---------
- `axes` | `xaxislocation` | `"zero"`
- | `yaxislocation` | `"zero"`
- `hggroup` | `erasemode` |
- `image` | `erasemode` |
- `line` | `erasemode` |
- `patch` | `erasemode` |
- `patch` | `normalmode` |
- `surface` | `erasemode` |
- `surface` | `normalmode` |
- `text` | `erasemode` |
-
-
-### Alphabetical list of new functions added in 5
-
-- `clearvars`
-- `isfile`
-- `isfolder`
-- `matlab.lang.makeUniqueStrings`
-- `matlab.lang.makeValidName`
-- `movegui`
-- `movfun`
-- `movie`
-- `movmad`
-- `movmax`
-- `movmean`
-- `movmedian`
-- `movmin`
-- `movprod`
-- `movslice`
-- `movstd`
-- `movsum`
-- `movvar`
-- `openfig`
-- `ordeig`
-- `savefig`
-- `uitable`
-
-
-### Old release news
-
-- [Octave 4.4.x](etc/NEWS.4)
-- [Octave 4.2.x](etc/NEWS.4)
-- [Octave 4.0.x](etc/NEWS.4)
-- [Octave 3.8.x](etc/NEWS.3)
-- [Octave 3.6.x](etc/NEWS.3)
-- [Octave 3.4.x](etc/NEWS.3)
-- [Octave 3.2.x](etc/NEWS.3)
-- [Octave 3.0.x](etc/NEWS.3)
-- [Octave 2.x](etc/NEWS.2)
-- [Octave 1.x](etc/NEWS.1)
diff -r 7ecd07721cca -r 86ddba86efbe etc/NEWS.5.md
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/NEWS.5.md Wed Dec 08 22:43:24 2021 +0900
@@ -0,0 +1,443 @@
+Summary of bugs fixed for version 5.2.0 (2020-01-31):
+----------------------------------------------------
+
+See: https://www.octave.org/news/release/2020/01/31/octave-5.2.0-released.html
+
+For (bug #XXXXX) see https://savannah.gnu.org/bugs/?XXXXX
+
+### Improvements
+
+- Lock amd and symbfact to avoid segmentation fault with SuiteSparse (bug #57435)
+- Fix segfault when calculating patch vertex normals (bug #57353)
+- Fix segfault in constructing patch normals for lighting (bug #57353)
+- mat2str.m: Fix for logical matrix (add `transpose`).
+- improve file equality check for MS Windows (bug #55161)
+- ismember.m: Fix second return argument when values are complex (bug #52437)
+- findobj.m: Fix typo and correctly handle numeric properties (bug #57030)
+- Correctly display integer types with format hex (bug #56966)
+- Cast `winqueryreg` `REG_DWORD` types to `DWORD` (bug #56703)
+- Fix numerous errors in `audiowrite` / `audioread` (bug #56889)
+- print.m: Pass quoted path to `octave-svgconvert` (bug #56768)
+- dir.m: Fix occasionally returning incorrect folder field (bug #55448)
+- Stop segfault when calling 3-input form of `diag` with cell arrays (bug #56711)
+- improve message for setting breakpoint in nonexistent function (bug #56157)
+- Use framebuffer object for printing invisible Qt figures on mac (bug #55268)
+- Escape backslash characters in `EPS` output (bug #56448)
+- Use replacement characters to display non UTF-8 strings in figures (bug #55974)
+- inputrc: Add warning about modification (bug #56079)
+- documentation.cc (global_search): just return if query string is empty (bug #56388)
+- Default (c)transpose for old style class arrays (bug #56323)
+- Always reserve at least 1 element of storage for sparse matrices (bug #56232)
+- Don't segfault at exit after reading malformed HDF5 file (bug #56149)
+- Fix pause() with no arguments called on Windows (bug #55943)
+- refactor minimum eigenvalue index search in `qp` (bug #56037)
+- qp: fix obscure corner case when calculating `qp` caused by a typo (bug #56037)
+- use `std::streampos` instead of `std::ios::streampos` (patch #9782).
+- fix `pause` and `kbhit` with glibc 2.28 end-of-file state behavior (bug #55029)
+- Fix return of left-handed vectors when inputs are complex (bug #56026)
+- waitbar.m: Fix hang when using `createcancelbtn` property (bug #55963)
+- shading.m: Fix unexpected error when multiple `hggroups` present (bug #55993)
+- dec2base.m: Correctly handle zero matrix input (bug #56005)
+- eliminate duplicate graphics callback object stack (bug #55908)
+- Improve performance when closing figures (bug #55908)
+- Reduce time to process `pkg -forge list` by 30X (bug #39479)
+- Feed `fig2dev` with PDF files converted from svg (bug #55906)
+- Improve error checking for `iconv_open`.
+- poly.m: fix the fix for input of complex conjugate pairs (bug #53897)
+- mkoctfile: use the `TMPDIR` environment variable if set (bug #55814)
+- line.m: Fix creation of unwanted axes (bug #55840)
+- Accept 4-input form for quiver3 (bug #55570)
+- pkg.m: restore installing packages from zip archives (bug #55788)
+- axis.m: Fix issues with `equal` argument (bug #55619, bug #55614, bug #55574,
+ bug #55514, bug #54848, bug #53724, bug #53504, bug #53336, bug #51938, bug #50356).
+- ordeig.m: Do not fail on 1x1 matrices (bug #55779)
+
+### GUI
+
+- fix editors search and replace in selection (bug #56405)
+- undo a complete replace all action in the editor (bug #56405)
+- fix missing unlock of mutex when gui editor is not present (bug #56097)
+- prevent unnamed editor tab from being closed by `rmdir` (bug #55888)
+- prevent editor from closing files that are not affected by `rmdir` (bug #55823)
+- fix creating keyword files for editor autocompletion (bug #55835)
+- fix dock widget position when being dragged out of the main window (bug #55704)
+
+### Build system / Tests
+
+- configure: prevent overlinking when SUNDIALS is disabled (bug #55956)
+- use QtCore and Qt5Gui modules instead of Qt5OpenGL (bug #55735)
+- make building with Qt4 QGLWidget work again (bug #55735)
+- build: adapt mk-qthelp.pl to changes in Texinfo 6.7.
+- BIST should not rely on the current directory to be writable.
+- bp-table.cc: Fix test.
+- maint: Make old style class tests Matlab compatible.
+- Add BIST tests for `unlink` (bug #56097)
+
+### Documentation
+
+- fix many spelling errors (bug #57613)
+- help: improve documentation for the `startup.m` user script.
+- avoid conflict with @seealso macro in Texinfo 6.6 (bug #55952)
+- mk-doc-cache.pk: Also translate `@seealso` here. (bug #55952)
+- __makeinfo__.m: Also translate `@seealso` here (bug #55952)
+- polar.m: Document that input is expected to be in radians (bug #57052)
+- gallery.m: Fix typo in docstring for poisson (bug #56267)
+- Add 1024x1024 Octave logo icon (bug #55836)
+- add `.editorconfig` for default file encoding and indentation.
+- octave.doap: Copy localized (short) description over from appdata (bug #55279)
+- org.octave.Octave.appdata.xml: Add German and French description (bug #55279)
+- languages/*.ts: updated language files (bug #55772)
+- quiver3.m: Fix texinfo typo in docstring from cset f7b10bd40045.
+- doc: fix `.` Operator Index entry to build with Texinfo 6.7.
+- doc: improve example of using global variables from oct-files.
+- doc: Create en-dashes and em-dashes correctly in documentation.
+- doc: expand `page_output_immediately` doc string, mention `page_screen_output`.
+- doc: Clarify documentation of `history_file` (bug #57027)
+- doc: Improve documentation for `get_help_text`, `get_help_text_from_file`.
+- doc: Add documentation for `GNUTERM` variable used with gnuplot (bug #56906)
+- doc: Improve `contour` docstring example (bug #56849)
+- doc: Add example to show limitations of the given BLAS integer size.
+- doc: Improve documentation of sparse functions.
+- doc: Improve spelling of `bicgstab` (bug #56812)
+- doc: Remove `Map` functions `keys`, `values`, `remove` from unimplemented list (bug #56718)
+- doc: Add function index entry for alias `inverse` (bug #56629)
+- add content rating declaration to AppStream metadata (bug #56466)
+- doc: Remove stray semicolons from `pie`, `pie3` calling forms.
+- doc: Redo documentation for `rats` function.
+- doc: Specify `position` property for text objects is a three-element vector (bug #56303)
+- doc: state that Octave can only load HDF5 files created by itself (bug #56148)
+- doc: Fix names of options in `issorted` (bug #56087)
+- doc: Small fixes to `mat2cell` and `polyeig` docstrings (bug #55985)
+- doc: Improve example code for using `-pdflatexstandalone` (bug #55945)
+- doc: Refer to "root object" rather than "root figure object".
+- doc: Place cross-reference from list of graphics object properties back to object (bug #46076)
+- doc: document the newline character in warning messages (bug #49158)
+- doc: pkg versions can be more general than "x.y.z" (bug #55798)
+
+
+Summary of important user-visible changes for version 5 (2019-02-23):
+--------------------------------------------------------------------
+
+See: https://www.octave.org/NEWS-5.1.html
+
+### General improvements
+
+- The Octave plotting system now supports high resolution screens,
+ i.e., those with greater than 96 DPI which are referred to as
+ HiDPI/Retina monitors.
+
+- Unicode character support for files and folders in Windows.
+
+- A new core function `movfun` will apply a function to a sliding
+ window of arbitrary size on a dataset and accumulate the results.
+ Many common cases have been implemented using the naming
+ scheme `movXXX` where `XXX` is the function that will be applied.
+ For example, the moving average over a dataset is `movmean`.
+ New moving window functions:
+
+ `movfun` `movslice`
+ `movmad` `movmax` `movmean` `movmedian` `movmin` `movprod`
+ `movstd` `movsum` `movvar`
+
+- The `fsolve` function has been tweaked to use larger step sizes when
+ calculating the Jacobian of a function with finite differences.
+ This leads to faster convergence.
+
+- The `ranks` function has been recoded for performance and is now 25X
+ faster. In addition, it now supports a third argument that specifies
+ how to resolve the ranking of tie values.
+
+- The function `randi` has been recoded to produce an unbiased (all
+ results are equally likely) sample of integers. This may produce
+ different results in existing code. If it is necessary to reproduce
+ the exact random integer sequence as in previous versions use
+
+ `ri = imin + floor ((imax - imin + 1) * rand ());`
+
+- The function `isdefinite` now returns `true` or `false` rather than
+ `-1`, `0`, or `1`. To test for a positive semi-definite matrix (old
+ output of `0`) check whether the following two conditions hold:
+
+ `isdefinite (A) => 0` and `isdefinite (A + 5*TOL, TOL) => 1`
+
+- The `intmax`, `intmin`, and `flintmax` functions now accept a variable
+ as input. Existing code to query the range of an existing variable can
+ be simplified by removing the call to `class` that was previously
+ required. For example defining the variable `x = int8 (3)` in the
+ workspace, calls like
+
+ `range = [ intmin(class(x)), intmax(class(x)) ]`
+
+ can in Octave 5 be simplified to `range = [ intmin(x), intmax(x) ]`.
+
+- The path handling functions no longer perform variable or brace
+ expansion on path elements and Octave's load-path is no longer
+ subject to these expansions.
+
+- A new printing device is available, `"-ddumb"`, which produces ASCII
+ art for plots. This device is only available with the gnuplot toolkit.
+
+- The `msgbox` function has changed in two respects: the default WindowStyle
+ is now `"non-modal"`, and the default interpreter for the message is now
+ `"tex"`. Both WindowStyle and Interpreter can be controlled by passing an
+ option struct argument.
+
+### Dependencies
+
+- The GUI requires Qt libraries. The minimum Qt4 version supported is
+ Qt4.8. Qt5 of any version is preferred.
+
+- The OSMesa library is no longer used. To print invisible figures
+ when using OpenGL graphics, the Qt `QOFFSCREENSURFACE` feature must be
+ available and you must use the qt graphics toolkit.
+
+- The FFTW library is now required to perform FFT calculations.
+ The FFTPACK sources have been removed from Octave.
+
+
+### Matlab compatibility
+
+- The determination of an object's dimensions, size, and shape by the
+ functions `ndims`, `rows`, `columns`, `isscalar`, `isvector`,
+ `isrow`, `iscolumn`, `ismatrix`, and `issquare` now fully depends
+ on the function size. Thus, any user-defined object can ensure correct
+ treatment by the aforementioned functions by properly overloading the
+ `size` function.
+
+- The functions `issymmetric` and `ishermitian` accept an option
+ `"nonskew"` or `"skew"` to calculate the symmetric or skew-symmetric
+ property of a matrix. Performance has also been increased.
+
+- The `issorted` function now uses a direction option of `"ascend"`
+ or `"descend"`. Change all uses of `"ascending"` and `"descending"`
+ in existing code to the new options.
+
+- The `strncmp` and `strncmpi` functions now return `true` if the two
+ input strings match, even though the number of characters specified
+ by `n` exceeds the string length. For Example:
+
+ `strncmp ("abc", "abc", 100)`
+
+ returns `true` in Octave 5 and `false` in older versions of Octave.
+
+- The `str2func` function no longer accepts a second `"global"` argument.
+ This argument was typically used to allow functions that accept
+ function names as arguments to avoid conflicts with subfunctions or
+ nested functions. Instead, it's best to avoid this situation
+ entirely and require users to pass function handles rather than
+ function names.
+
+- Using `clear` with no arguments now removes only local variables
+ from the current workspace. Global variables will no longer be
+ visible, but they continue to exist in the global workspace and
+ possibly other workspaces such as the base workspace.
+
+
+#### Nonlinear Equations
+
+Several default solver options have been changed to be Matlab compatible.
+This *may* result in existing code producing different results.
+
+- `fsolve`
+
+ Option | New Default | Old Default
+ ---------------|------------------|-------------
+ `FinDiffType` | `"forward"` | `"central"`
+ `MaxFunEvals` | `100*length(x0)` | `Inf`
+ `TolFun` | `1e-6` | `1e-7`
+ `TolX` | `1e-6` | `1e-7`
+ `Updating` | `"off"` | `"on"`
+
+- `fminsearch`
+
+ Option | New Default | Old Default
+ ---------|-------------|------------
+ `TolFun` | `1e-7` | `1e-4`
+
+- `fminbnd`
+
+ Option | New Default | Old Default
+ ---------------|-------------|------------
+ `MaxFunEvals` | `500` | `Inf`
+ `MaxIter` | `500` | `Inf`
+ `TolX` | `1e-4` | `1e-8`
+
+- `fminunc`
+
+ Option | New Default | Old Default
+ ---------------|------------------|------------
+ `FinDiffType` | `"forward"` | `"central"`
+ `MaxFunEvals` | `100*length(x0)` | `Inf`
+ `TolX` | `1e-6` | `1e-7`
+ `TolFun` | `1e-6` | `1e-7`
+
+
+#### Graphic objects
+
+- Figure graphic objects have a new property `"Number"` which is
+ read-only and will return the handle (number) of the figure.
+ However, if the property `"IntegerHandle"` has been set to `"off"`
+ then the property will return an empty matrix `[]`.
+
+- Patch and surface graphic objects now use the `"FaceNormals"` property
+ for flat lighting.
+
+- `"FaceNormals"` and `"VertexNormals"` for patch and surface graphic
+ objects are now calculated only when necessary to improve graphics
+ performance. In order for any normals to be calculated the
+ `"FaceLighting"` property must be set to `"flat"` (FaceNormals) or
+ `"gouraud"` (VertexNormals), **and** a light object must be present
+ in the axes.
+
+- The `"Margin"` property of `text`-objects has a new default of `3`
+ rather than `2`.
+
+- Printing to raster formats (bitmaps like PNG or JPEG) now uses an
+ OpenGL-based method by default. The print options `"-opengl"`
+ (raster) and `"-painters"` (vector) have been added ("qt" toolkit
+ only). The figure property `"renderer"` specifies which renderer to
+ use. When the property `"renderermode"` is `"auto"` Octave will select
+ `"-opengl"` for a raster output format and `"-painters"` for a vector
+ output format.
+
+- A new print option `"-RGBImage"` has been added which captures the
+ pixels of a figure as an image. This is similar to screen capture
+ tools, except that print formatting options can be used to, for
+ example, change the resolution or display the image in black and
+ white.
+
+- Two new print options for page-based formats (PDF, PostScript) have
+ been added. The `"-fillpage"` option will stretch the plot to occupy
+ the entire page with 0.25 inch margins all around. The `"-bestfit"`
+ option will expand the plot to take up as much room as possible on
+ the page without distorting the original aspect ratio of the plot.
+
+- Printing using the `"-dtiff"` output device will now create compressed
+ images using LZW compression. To produce uncompressed images use the
+ `"-dtiffn"` device.
+
+
+### Legacy functions
+
+The following functions have been declared legacy functions which
+means they are obsolete and should not be used in any new code.
+Unlike deprecated functions, however, their removal from Octave has
+not yet been scheduled.
+
+ Function | Replacement
+ -----------------------|------------------
+ `findstr` | `strfind`
+ `flipdim` | `flip`
+ `isdir` | `isfolder` or `dir_in_loadpath`
+ `isequalwithequalnans` | `isequaln`
+ `isstr` | `ischar`
+ `setstr` | `char`
+ `strmatch` | `strncmp` or `strcmp`
+ `strread` | `textscan`
+ `textread` | `textscan`
+
+
+### Deprecated functions and properties
+
+The following functions and graphics properties have been deprecated
+in Octave 5 and will be removed from Octave 7 (or whatever version
+is the second major release after 5):
+
+- Functions
+
+ Function | Replacement
+ -------------------------|-------------------
+ `output_max_field_width` | `output_precision`
+ `is_keyword` | `iskeyword`
+
+- Graphics properties
+
+ Object | Property | Value
+ -----------------|---------------|------------
+ `text` | `fontangle` | `"oblique"`
+ `uibuttongroup` | `fontangle` | `"oblique"`
+ `uicontrol` | `fontangle` | `"oblique"`
+ `uipanel` | `fontangle` | `"oblique"`
+ `uitable` | `fontangle` | `"oblique"`
+
+- Specifying `legend` position with a numeric argument is deprecated.
+ Use a string argument instead.
+
+- The environment variable used by `mkoctfile` for linker flags is now
+ `LDFLAGS` rather than `LFLAGS`. `LFLAGS` is deprecated, and a warning
+ is emitted if is used, but it will continue to work.
+
+
+### Removed functions and properties
+
+The following functions and properties were deprecated in Octave 4.2
+and have been removed from Octave 5.
+
+- Functions
+
+ Function | Replacement
+ -----------------------|------------------
+ `bitmax` | `flintmax`
+ `mahalanobis` | `mahal` in Octave Forge statistics pkg
+ `md5sum` | `hash`
+ `octave_config_info` | `__octave_config_info__`
+ `onenormest` | `normest1`
+ `sleep` | `pause`
+ `usleep` | `pause`
+ `wavread` | `audioread`
+ `wavwrite` | `audiowrite`
+
+- Properties
+
+ Object | Property | Value
+ ------------|-------------------|---------
+ `axes` | `xaxislocation` | `"zero"`
+ | `yaxislocation` | `"zero"`
+ `hggroup` | `erasemode` |
+ `image` | `erasemode` |
+ `line` | `erasemode` |
+ `patch` | `erasemode` |
+ `patch` | `normalmode` |
+ `surface` | `erasemode` |
+ `surface` | `normalmode` |
+ `text` | `erasemode` |
+
+
+### Alphabetical list of new functions added in 5
+
+- `clearvars`
+- `isfile`
+- `isfolder`
+- `matlab.lang.makeUniqueStrings`
+- `matlab.lang.makeValidName`
+- `movegui`
+- `movfun`
+- `movie`
+- `movmad`
+- `movmax`
+- `movmean`
+- `movmedian`
+- `movmin`
+- `movprod`
+- `movslice`
+- `movstd`
+- `movsum`
+- `movvar`
+- `openfig`
+- `ordeig`
+- `savefig`
+- `uitable`
+
+
+### Old release news
+
+- [Octave 4.4.x](etc/NEWS.4)
+- [Octave 4.2.x](etc/NEWS.4)
+- [Octave 4.0.x](etc/NEWS.4)
+- [Octave 3.8.x](etc/NEWS.3)
+- [Octave 3.6.x](etc/NEWS.3)
+- [Octave 3.4.x](etc/NEWS.3)
+- [Octave 3.2.x](etc/NEWS.3)
+- [Octave 3.0.x](etc/NEWS.3)
+- [Octave 2.x](etc/NEWS.2)
+- [Octave 1.x](etc/NEWS.1)
diff -r 7ecd07721cca -r 86ddba86efbe etc/NEWS.6
--- a/etc/NEWS.6 Tue Dec 07 16:20:15 2021 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,542 +0,0 @@
-Summary of bugs fixed for version 6.4.0 (2021-10-30)
-----------------------------------------------------
-
-For (bug #XXXXX) see https://savannah.gnu.org/bugs/?XXXXX
-
-### Improvements and fixes
-
-- Reduce memory usage in BISTs for `copyobj`, `hgsave` (bug #57591).
-- `hgsave.m`, `copyobj.m`: Use `'qt'` graphics toolkit in BISTs.
-- `main.cc`: Use `getopt` to parse command line arguments (bug #60886).
-- `main.cc`: Remove invalid case (bug #60886).
-- Disable `getopt` error reporting in wrapper program (bug #60886).
-- `interp1.m`: Don't interpret later numeric input as `xi` (bug #60967).
-- `pkg`: Improve similar package name suggestion (bug #61067).
-- Store parent name in function object when caching parents in scope (bug #61105).
-- Avoid internal error and segfault with `eval` and scripts (bug #61191).
-- `rmpath`: Prevent removing the current directory from the load path (bug #61216).
-
-### GUI
-
-- Fix missing interpreter event in `octave-scintilla`.
-- Fix opening a file in a custom editor (bug #60990).
-
-### Documentation
-
-- Improve docstring for `disable_diagonal_matrix`, `disable_diagonal_matrix`,
- and `disable_range` (patch #10089).
-- `cbrt`: Clarify that function errors for non-real input.
-- `dsearchn.m`: Added optional distance output description (bug #61156).
-- Add Hungarian translation for project description files.
-- Document fsolve output "info" -2 (bug #61310).
-
-### Build system
-
-- Correct error message for incompatible CXSparse (bug #61385).
-
-
-Summary of bugs fixed for version 6.3.0 (2021-07-11)
-----------------------------------------------------
-
-For (bug #XXXXX) see https://savannah.gnu.org/bugs/?XXXXX
-
-### Important notice
-
-- This bug fix release breaks ABI compatiblity with Octave 6.2.0. Re-build
- binaries (like .oct or .mex files) when updating to this version.
-
-### Improvements and fixes
-
-- `ls-hdf5.cc`: Avoid throwing inside HDF5 function (bug #60081).
-- `ls-hdf5.cc`: Handle non-zero terminated type strings (bug #60081).
-- Fix occasional segfault in `symbfact` (bug #60101).
-- `fsolve.m`: Fix undefined output error when using `Output` function (bug #60144).
-- Fix compilation error with `iconv_t` on Solaris (bug #60162).
-- build: Check for `stropts.h` (bug #60163).
-- Avoid ambiguous call to `pow` (bug #60169).
-- Fix context link when creating handle to nested function.
-- `print.m`: Warn when figure is too large to be printed to output page (bug #60236).
-- Defer clearing function vars until stack frame is deleted (bug #60137).
-- Avoid memory leaks when returning handles to nested functions.
-- Hold references to closure frames in anon functions if needed (bug #60237).
-- `eigs`: Prevent possible segmentation fault at exit (bug #60311).
-- Issue warning when gnuplot graphics toolkit is initialized.
-- mpoles.m: Fix detection of pole multiplicity (bug #60384).
-- Perform shutdown actions in interpreter destructor (bug #60334).
-- build: Make relocation of dependencies with Octave optional (bug #60413).
-- `qz.cc`: Return correct number of eigenvalues (bug #60357).
-- `qz.cc`: Let test pass with LAPACK 3.9.1 and earlier versions (bug #60357).
-- `pkg.m`: Use default prefixes unless otherwise set previously (bug #60472).
-- `betaincinv.m`: Correctly handle small inputs (bug #60528).
-- `betaincinv.m`: Correctly handle inputs very close to 1.0 (bug #60528).
-- `unistd-wrappers.c`: Allocate sufficient memory for `new_argv` (bug #60535).
-- Mark system functions correctly if `OCTAVE_HOME` is non-canonical (bug #60554).
-- Mark compiled system functions correctly if `OCTAVE_HOME` is non-canonical (bug #60554).
-- Fix error if test suite is run before Octave is installed (bug #60554).
-- `lo-array-errwarn.cc`: Include `` (bug #60470).
-- Use `std::size_t` and `std::ptrdiff_t` in C++ code (bug #60471).
-- Use `std::size_t` in more instances (bug #60471).
-- Return proper number of stack frames for `dbstack (N)` call (bug #60531).
-- Avoid ambiguous match of overloaded function (bug #60531).
-- `lscov.m`: Relax BIST tolerance to pass with OpenBLAS (bug #60552).
-- `print`: Fix error when `"px"` word is present in a figure (bug #60641).
-- `logm.m`: Fix check for real negative values in complex vector (bug #60738).
-- build: Set necessary flags to allow execution on Windows Vista (bug #60746).
-- Declare base_parser destructor virtual.
-- `hist.m`: Improve handling and docstring for third parameter "norm" (bug #60783).
-- `logm.m`: Allow tolerance in check for real negative values in complex vector (bug #60738).
-- `expm.m`, `logm.m`: Use function `isdiag` to detect if input is a diagonal matrix (bug #60738).
-- tests: Relax tolerance for some tests on macOS.
-- `logspace.m`: Mark tests as known to fail on macOS (bug #55538).
-- `hist.m`: Use deterministic test (bug #60783).
-- `rgb2ind.m`: Reduce memory usage and eliminate randomness in test.
-- `logm.m`: Allow larger tolerance for test on macOS.
-- build: Use correct path to `octave` binary in build tree on macOS.
-- build: Fix typo in folder to libraries when building `.oct` or `.mex` files.
-- build: Set DL_LDFLAGS in the build rules for .oct or .mex files.
-- `rgb2ind.m`: Suppress output in test.
-- Improve documentation for `log2` function (bug #60817).
-- `ind2sub`: Fix typo in "see also" section of docstring (bug #60842).
-- `mrdivide`, `mldivide`: Document that functions might return minimum norm solutions (bug #60839).
-- Fix scoping issue for handles to sibling nested functions (bug #60845).
-- `ls-mat5.cc`: Avoid integer overflow in calculation of buffer size for zlib (bug #55427).
-- Move top-level REPL from interpreter to evaluator.
-- Avoid crash with `dbquit` when executing command in terminal from GUI (bug #60813).
-
-### GUI
-
-- Fix calling external editor (bug #60198).
-- Fix missing file suffix .m when saving a new script (bug #60214).
-- Do not run files that are not saved as Octave files (bug #60214).
-- Fix confirm overwrite for native editor file "save as" dialogs (bug #60214).
-- Fix crash when GUI tries to restore missing previous Octave dir (bug #60255).
-- Fix restoring the horizontal position of docked GUI widgets (bug #59426).
-- Prevent floating widgets from re-opening after restart (bug #60279).
-- Avoid crash in GUI for `rmdir("")` (bug #60473).
-- Fix EOL mode when saving files under new names (bug #60585).
-- Fix auto indentation of switch-structure in GUI editor (bug #60649).
-- Avoid crash when closing GUI with open editor tabs (bug #60500).
-- `octave-qscintilla.cc` (`contextmenu_run`): Fix keyboard command handling.
-
-### Documentation
-
-- Improve Differential Equations chapter and example for lsode (bug #57508).
-- Clarify usage of "Depends" keyword in package `DESCRIPTION` file (bug #60053).
-- Add note that wildcard patterns for `save` are glob patterns (bug #60157).
-- Change example for Delaunay triangulation to match the generating code (bug #60216).
-- Document single precision issues with OpenGL graphics toolkits (bug #59418).
-- Minor changes to documentation of single precision issues with OpenGL (bug #59418).
-- Expand on documentation for command syntax (bug #60084).
-- `isprop.m`: Document that function only works on graphics objects in Octave 6.X (bug #60295).
-- Explain how to write dual-purpose executable scripts and Octave functions (bug #60291).
-- Update keyword docstrings (bug #60275).
-- Use Texinfo commands to improve `transpose()` docstring rendering.
-- `betainc.m`, `betaincinv.m`: Correct non-TeX definition of beta incomplete integral.
-- Grammarcheck documentation ahead of 6.3 release.
-- Spellcheck documentation ahead of 6.3 release.
-
-
-Summary of bugs fixed for version 6.2.0 (2021-02-19):
-----------------------------------------------------
-
-See: https://www.octave.org/news/release/2021/02/20/octave-6.2.0-released.html
-
-For (bug #XXXXX) see https://savannah.gnu.org/bugs/?XXXXX
-
-### Improvements
-
-- `bicgstab.m`, `cgs.m`: Fix typo in `"iter_min"` variable name (bug #60071).
-- Compute with `NA` correctly on MIPS architecture (bug #59830).
-- Fix lookup of `"caller"` stack frame (bug #59847).
-- Also wait on `main_thread` after interpreter shuts down (bug #56952).
-- Fix symbol lookup issue with anonymous functions (bug #55989).
-- Line buffer input in `terminal_reader` class.
-- `qr`: Error for dense `A` and `B` with three output arguments (bug #58944).
-- `strmatch.m`: Always return column vector for Matlab compatibility (bug #59917)
-- Avoid crash when `evalin` global variables into existence in script (bug #59937)
-- Avoid crash on null statement list (bug #59938).
-- Fix ignored output from user function in left side of assignment (bug #59704).
-- Temporarily set lvalue list to null (bug #59704).
-- `fminbnd.m`: do not ignore `"OutputFcn"` (bug #59901).
-- `load-path.cc`: Reduce number of times `"canonicalize_file_name"` is called (bug #59711).
-- `interpn.m`: Use `size_equal` for 10X speedup in cset 067b663529bb (bug #59856).
-- `interpn.m`: Fix check for scattered point coordinates (bug #59856).
-- Avoid `YYUSE` in Octave parser files (see bug #59806).
-- `struct2hdl.m`: Set `"units"` property early.
-- `load-path.cc`: Avoid copying string for loop variable.
-- `pcg.m`: Return correct `FLAG` and correct `RELRES` output (bug #59776).
-- Use static keyword on regexp pattern in `file_stat` (bug #59706).
-- `stat`: Improve regular expression for UNC roots on Windows (bug #59706).
-- `stat`: Use `"make_absolute"` instead of `"canonicalize_file_name"` on Windows (bug #59706).
-- Improve `class_simple` function handle function lookup (bug #59661).
-- `hdl2struct.m`: store hidden text properties (bug #57241).
-- Mark script created with commands from history as modified.
-- `replem.m`: Fix operations with sparse matrices (bug #59705).
-- `ode_event_handler.m`: Fix mishandling of event edge types and multiple events (bug #59709).
-- Increase size of dynamic variable `new_argv` by 1 to avoid indexing out of array.
-- Fix incorrect results for set functions with `"legacy"` option (bug #59708).
-- `dir.m`: Return folder (not including file) in field `"folder"` (bug #59689).
-- Avoid memory leak with function handles (bug #59659).
-- Avoid dispatch error if method argument is a function handle (bug #59617).
-- Avoid crash due to accessing first element of empty list (bug #59656).
-- Don't propagate prevailing `isargout` info through `mexCallMATLAB` (bug #59597).
-- Show original error when failing to create a graphics object (bug #59620).
-- Fix regression with superclass lookup in classdef constructors (bug #59602).
-- Allow Octave class `execution_exception` to catch `std::exception` objects (bug #59592).
-
-### GUI
-
-- Fix restoring editor session after having closed all tabs (bug #60051).
-- Maybe convert TAB to SPC in GUI terminal pasted text (bug #59916).
-- Make bracketed paste mode work in GUI terminal.
-- Fix regression in variable editor when printing without selection.
-- Avoid gui when octave is launched in non-interactive mode (bug #59628).
-- `file-editor-tab.cc` (dtor): do not delete `m_edit_area` (bug #59628).
-- Fix error when restoring previous main window layout (bug #59426).
-- Improve default sizes of gui dock widgets.
-- Clean up constructing main window layout of the gui.
-- Fix focus command window after command execution (bug #59609).
-- Check object size before plotting from variable editor (bug #56685).
-- `documentation.cc`: Include missing header (bug #59553).
-
-### Build system / Tests
-
-- Add default value to `OCTAVE_MIPS_NAN` configure macro for cross-compiling (bug #59830).
-- tests: Function name should match file name (bug #59704).
-- Avoid build errors with Qt4 (bug #59813).
-- eigs.m: Make tests that depend on CHOLMOD conditional.
-- tests: Make tests that depend on CXSparse conditional.
-- build: Use `SPARSE_XCPPFLAGS` in `CPP_FLAGS` for libcorefcn (bug #59806).
-- Add test case for bug #59661.
-- `hgsave.m`: Allow test to run with qt or gnuplot graphics toolkits (bug #57241).
-
-### Documentation
-
-- `embedded.cc`: Fix syntax error interpreter shutdown.
-- Update Octave Project Developers copyright for the new year.
-- Use the same comment style for copyright headers in .m files and shell scripts.
-
-
-Summary of important user-visible changes for version 6.1.0 (2020-11-26):
-------------------------------------------------------------------------
-
-### General improvements
-
-- The `intersect`, `setdiff`, `setxor`, `union`, and `unique` functions
- accept a new sorting option `"stable"` which will return output values
- in the same order as the input, rather than in ascending order.
-
-- Complex RESTful web services can now be accessed by the `webread` and
- `webwrite` functions alongside with the `weboptions` structure. One
- major feature is the support for cookies to enable RESTful
- communication with the web service.
-
- Additionally, the system web browser can be opened by the `web`
- function.
-
-- The `linspace` function now produces symmetrical sequences when the
- endpoints are symmetric. This is more intuitive and also compatible
- with recent changes made in Matlab R2019b.
-
-- The underlying algorithm of the `rand` function has been changed.
- For single precision outputs, the algorithm has been fixed so that it
- produces values strictly in the range (0, 1). Previously, it could
- occasionally generate the right endpoint value of 1 (See bug #41742).
- In addition, the new implementation uses a uniform interval between
- floating point values in the range (0, 1) rather than targeting a
- uniform density (# of random integers / length along real number
- line).
-
-- Numerical integration has been improved. The `quadv` function has
- been re-written so that it can compute integrands of periodic
- functions. At the same time, performance is better with ~3.5X fewer
- function evaluations required. A bug in `quadgk` that caused complex
- path integrals specified with `"Waypoints"` to occasionally be
- calculated in the opposite direction was fixed.
-
-- The `edit` function option `"editinplace"` now defaults to `true` and
- the option `"home"` now defaults to the empty matrix `[]`. Files will
- no longer be copied to the user's HOME directory for editing. The old
- behavior can be restored by setting `"editinplace"` to `false` and
- `"home"` to `"~/octave"`.
-
-- The `format` command supports two new options: `uppercase` and
- `lowercase` (default). With the default, print a lowercase 'e' for
- the exponent character in scientific notation and lowercase 'a-f' for
- the hex digits representing 10-15. With `uppercase`, print 'E' and
- 'A-F' instead. The previous uppercase formats, `E` and `G`, no longer
- control the case of the output.
-
- Additionally, the `format` command can be called with multiple options
- for controlling the format, spacing, and case in arbitrary order.
- For example:
-
- format long e uppercase loose
-
- Note, in the case of multiple competing format options the rightmost
- one is used, and, in case of an error, the previous format remains
- unchanged.
-
-- L-value references (e.g., increment (++), decrement (--), and all
- in-place assignment operators (+=, -=, *=, /=, etc.)) are no longer
- allowed in anonymous functions.
-
-- New warnings have been added about questionable uses of the colon ':'
- range operator. Each has a new warning ID so that it can be disabled
- if desired.
-
- > `Octave:colon-complex-argument` : when any arg is complex
- > `Octave:colon-nonscalar-argument` : when any arg is non-scalar
-
-- The `regexp` and related functions now correctly handle and *require*
- strings in UTF-8 encoding. As with any other function that requires
- strings to be encoded in Octave's native encoding, you can use
- `native2unicode` to convert from your preferred locale. For example,
- the copyright symbol in UTF-8 is `native2unicode (169, "latin1")`.
-
-- The startup file `octaverc` can now be located in the platform
- dependent location for user local configuration files (e.g.,
- ${XDG_CONFIG_HOME}/octave/octaverc on Unix-like operating systems or
- %APPDATA%\octave\octaverc on Windows).
-
-- `pkg describe` now lists dependencies and inverse dependencies
- (i.e., other installed packages that depend on the package in
- question).
-
-- `pkg test` now tests all functions in a package.
-
-- When unloading a package, `pkg` now checks if any remaining loaded
- packages depend on the one to be removed. If this is the case `pkg`
- aborts with an explanatory error message. This behavior can be
- overridden with the `-nodeps` option.
-
-- The command
-
- dbstop in CLASS at METHOD
-
- now works to set breakpoints in classdef constructors and methods.
-
-#### Graphics backend
-
-- The use of Qt4 for graphics and the GUI is deprecated in Octave
- version 6 and no further bug fixes will be made. Qt4 support will be
- removed completely in Octave version 7.
-
-- The `legend` function has been entirely rewritten. This fixes a
- number of historical bugs, and also implements new properties such as
- `"AutoUpdate"` and `"NumColumns"`. The gnuplot toolkit---which is no
- longer actively maintained---still uses the old legend function.
-
-- The `axis` function was updated which resolved 10 bugs affecting
- axes to which `"equal"` had been applied.
-
-- Graphic primitives now accept a color property value of `"none"`
- which is useful when a particular primitive needs to be hidden
- (for example, the Y-axis of an axes object with `"ycolor" = "none"`)
- without hiding the entire primitive `"visibility" = "off"`.
-
-- A new property `"FontSmoothing"` has been added to text and axes
- objects that controls whether anti-aliasing is used during the
- rendering of characters. The default is `"on"` which produces smooth,
- more visually appealing text.
-
-- The figure property `"windowscrollwheelfcn"`is now implemented.
- This makes it possible to provide a callback function to be executed
- when users manipulate the mouse wheel on a given figure.
-
-- The figure properties `"pointer"`, `"pointershapecdata"`, and
- `"pointershapehotspot"` are now implemented. This makes it possible
- to change the shape of the cursor (pointer in Matlab-speak) displayed
- in a plot window.
-
-- The figure property `"paperpositionmode"` now has the default `"auto"`
- rather than `"manual"`. This change is more intuitive and is
- Matlab compatible.
-
-- The appearance of patterned lines `"LineStyle" = ":"|"--"|"-."` has
- been improved for small widths (`"LineWidth"` less than 1.5 pixels)
- which is a common scenario.
-
-- Printing to EPS files now uses a tight bounding box (`"-tight"`
- argument to print) by default. This makes more sense for EPS
- files which are normally embedded within other documents, and is
- Matlab compatible. If necessary use the `"-loose"` option to
- reproduce figures as they appeared in previous versions of Octave.
-
-- The following print devices are no longer officially supported: cdr,
- corel, aifm, ill, cgm, hpgl, mf and dxf. A warning will be thrown
- when using those devices, and the code for supporting those formats
- will eventually be removed from a future version of Octave.
-
-- The placement of text subscripts and superscripts has been
- re-engineered and now produces visually attractive results similar to
- Latex.
-
-### Matlab compatibility
-
-- The function `unique` now returns column index vectors for the second
- and third outputs. When duplicate values are present, the default
- index to return is now the `"first"` occurrence. The previous Octave
- behavior, or Matlab behavior from releases prior to R2012b, can be
- obtained by using the `"legacy"` flag.
-
-- The function `setdiff` with the `"rows"` argument now returns Matlab
- compatible results. The previous Octave behavior, or Matlab behavior
- from releases prior to R2012b, can be obtained by using the `"legacy"`
- flag.
-
-- The functions `intersect`, `setxor`, and `union` now accept a
- `"legacy"` flag which changes the index values (second and third
- outputs) as well as the orientation of all outputs to match Matlab
- releases prior to R2012b.
-
-- The function `streamtube` is Matlab compatible and plots tubes along
- streamlines which are scaled by the vector field divergence. The
- Octave-only extension `ostreamtube` can be used to visualize the flow
- expansion and contraction of the vector field due to the local
- crossflow divergence.
-
-- The interpreter now supports handles to nested functions.
-
-- The graphics properties `"LineWidth"` and `"MarkerSize"` are now
- measured in points, *not* pixels. Compared to previous versions
- of Octave, some lines and markers will appear 4/3 larger.
-
-- The meta.class property "SuperClassList" has been renamed
- "Superclasslist" for Matlab compatibility. The original name will
- exist as an alias until Octave version 8.1.
-
-- Inline functions created by the function `inline` are now of type
- "inline" when interrogated with the `class` function. In previous
- versions of Octave, the class returned was "function_handle". This
- change is Matlab compatible. Inline functions are deprecated in
- both Matlab and Octave and support may eventually be removed.
- Anonymous functions can be used to replace all instances of inline
- functions.
-
-- The function `javaaddpath` now prepends new directories to the
- existing dynamic classpath by default. To append them instead, use
- the new `"-end"` argument. Multiple directories may now be specified
- in a cell array of strings.
-
-- An undocumented function `gui_mainfcn` has been added, for compatibility
- with figures created with Matlab's GUIDE.
-
-- Several validator functions of type `mustBe*` have been added. See
- the list of new functions below.
-
-### Alphabetical list of new functions added in Octave 6
-
-* `auto_repeat_debug_command`
-* `commandhistory`
-* `commandwindow`
-* `filebrowser`
-* `is_same_file`
-* `lightangle`
-* `mustBeFinite`
-* `mustBeGreaterThan`
-* `mustBeGreaterThanOrEqual`
-* `mustBeInteger`
-* `mustBeLessThan`
-* `mustBeLessThanOrEqual`
-* `mustBeMember`
-* `mustBeNegative`
-* `mustBeNonempty`
-* `mustBeNonNan`
-* `mustBeNonnegative`
-* `mustBeNonpositive`
-* `mustBeNonsparse`
-* `mustBeNonzero`
-* `mustBeNumeric`
-* `mustBeNumericOrLogical`
-* `mustBePositive`
-* `mustBeReal`
-* `namedargs2cell`
-* `newline`
-* `ode23s`
-* `ostreamtube`
-* `rescale`
-* `rotx`
-* `roty`
-* `rotz`
-* `stream2`
-* `stream3`
-* `streamline`
-* `streamtube`
-* `uisetfont`
-* `verLessThan`
-* `web`
-* `weboptions`
-* `webread`
-* `webwrite`
-* `workspace`
-
-
-### Deprecated functions and properties
-
-The following functions and properties have been deprecated in Octave 6
-and will be removed from Octave 8 (or whatever version is the second
-major release after 6):
-
-- Functions
-
- Function | Replacement
- -----------------------|------------------
- `runtests` | `oruntests`
-
-- Properties
-
- Object | Property | Value
- -----------------|---------------|------------
- | |
-
-- The environment variable used by `mkoctfile` for linker flags is now
- `LDFLAGS` rather than `LFLAGS`. `LFLAGS` is deprecated, and a warning
- is emitted if it is used, but it will continue to work.
-
-
-### Removed functions and properties
-
-The following functions and properties were deprecated in Octave 4.4
-and have been removed from Octave 6.
-
-- Functions
-
- Function | Replacement
- ---------------------|------------------
- `chop` | `sprintf` for visual results
- `desktop` | `isguirunning`
- `tmpnam` | `tempname`
- `toascii` | `double`
- `java2mat` | `__java2mat__`
-
-- Properties
-
- Object | Property | Value
- ---------------------|---------------------------|-----------------------
- `annotation` | `edgecolor ("rectangle")` |
- `axes` | `drawmode` |
- `figure` | `doublebuffer` |
- | `mincolormap` |
- | `wvisual` |
- | `wvisualmode` |
- | `xdisplay` |
- | `xvisual` |
- | `xvisualmode` |
- `line` | `interpreter` |
- `patch` | `interpreter` |
- `surface` | `interpreter` |
- `text` | `fontweight` | `"demi"` and `"light"`
- `uibuttongroup` | `fontweight` | `"demi"` and `"light"`
- `uicontrol` | `fontweight` | `"demi"` and `"light"`
- `uipanel` | `fontweight` | `"demi"` and `"light"`
- `uitable` | `fontweight` | `"demi"` and `"light"`
-
-
-### Old release news
-
-- [Octave 5.x](etc/NEWS.5)
-- [Octave 4.x](etc/NEWS.4)
-- [Octave 3.x](etc/NEWS.3)
-- [Octave 2.x](etc/NEWS.2)
-- [Octave 1.x](etc/NEWS.1)
diff -r 7ecd07721cca -r 86ddba86efbe etc/NEWS.6.md
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/NEWS.6.md Wed Dec 08 22:43:24 2021 +0900
@@ -0,0 +1,542 @@
+Summary of bugs fixed for version 6.4.0 (2021-10-30)
+----------------------------------------------------
+
+For (bug #XXXXX) see https://savannah.gnu.org/bugs/?XXXXX
+
+### Improvements and fixes
+
+- Reduce memory usage in BISTs for `copyobj`, `hgsave` (bug #57591).
+- `hgsave.m`, `copyobj.m`: Use `'qt'` graphics toolkit in BISTs.
+- `main.cc`: Use `getopt` to parse command line arguments (bug #60886).
+- `main.cc`: Remove invalid case (bug #60886).
+- Disable `getopt` error reporting in wrapper program (bug #60886).
+- `interp1.m`: Don't interpret later numeric input as `xi` (bug #60967).
+- `pkg`: Improve similar package name suggestion (bug #61067).
+- Store parent name in function object when caching parents in scope (bug #61105).
+- Avoid internal error and segfault with `eval` and scripts (bug #61191).
+- `rmpath`: Prevent removing the current directory from the load path (bug #61216).
+
+### GUI
+
+- Fix missing interpreter event in `octave-scintilla`.
+- Fix opening a file in a custom editor (bug #60990).
+
+### Documentation
+
+- Improve docstring for `disable_diagonal_matrix`, `disable_diagonal_matrix`,
+ and `disable_range` (patch #10089).
+- `cbrt`: Clarify that function errors for non-real input.
+- `dsearchn.m`: Added optional distance output description (bug #61156).
+- Add Hungarian translation for project description files.
+- Document fsolve output "info" -2 (bug #61310).
+
+### Build system
+
+- Correct error message for incompatible CXSparse (bug #61385).
+
+
+Summary of bugs fixed for version 6.3.0 (2021-07-11)
+----------------------------------------------------
+
+For (bug #XXXXX) see https://savannah.gnu.org/bugs/?XXXXX
+
+### Important notice
+
+- This bug fix release breaks ABI compatiblity with Octave 6.2.0. Re-build
+ binaries (like .oct or .mex files) when updating to this version.
+
+### Improvements and fixes
+
+- `ls-hdf5.cc`: Avoid throwing inside HDF5 function (bug #60081).
+- `ls-hdf5.cc`: Handle non-zero terminated type strings (bug #60081).
+- Fix occasional segfault in `symbfact` (bug #60101).
+- `fsolve.m`: Fix undefined output error when using `Output` function (bug #60144).
+- Fix compilation error with `iconv_t` on Solaris (bug #60162).
+- build: Check for `stropts.h` (bug #60163).
+- Avoid ambiguous call to `pow` (bug #60169).
+- Fix context link when creating handle to nested function.
+- `print.m`: Warn when figure is too large to be printed to output page (bug #60236).
+- Defer clearing function vars until stack frame is deleted (bug #60137).
+- Avoid memory leaks when returning handles to nested functions.
+- Hold references to closure frames in anon functions if needed (bug #60237).
+- `eigs`: Prevent possible segmentation fault at exit (bug #60311).
+- Issue warning when gnuplot graphics toolkit is initialized.
+- mpoles.m: Fix detection of pole multiplicity (bug #60384).
+- Perform shutdown actions in interpreter destructor (bug #60334).
+- build: Make relocation of dependencies with Octave optional (bug #60413).
+- `qz.cc`: Return correct number of eigenvalues (bug #60357).
+- `qz.cc`: Let test pass with LAPACK 3.9.1 and earlier versions (bug #60357).
+- `pkg.m`: Use default prefixes unless otherwise set previously (bug #60472).
+- `betaincinv.m`: Correctly handle small inputs (bug #60528).
+- `betaincinv.m`: Correctly handle inputs very close to 1.0 (bug #60528).
+- `unistd-wrappers.c`: Allocate sufficient memory for `new_argv` (bug #60535).
+- Mark system functions correctly if `OCTAVE_HOME` is non-canonical (bug #60554).
+- Mark compiled system functions correctly if `OCTAVE_HOME` is non-canonical (bug #60554).
+- Fix error if test suite is run before Octave is installed (bug #60554).
+- `lo-array-errwarn.cc`: Include `` (bug #60470).
+- Use `std::size_t` and `std::ptrdiff_t` in C++ code (bug #60471).
+- Use `std::size_t` in more instances (bug #60471).
+- Return proper number of stack frames for `dbstack (N)` call (bug #60531).
+- Avoid ambiguous match of overloaded function (bug #60531).
+- `lscov.m`: Relax BIST tolerance to pass with OpenBLAS (bug #60552).
+- `print`: Fix error when `"px"` word is present in a figure (bug #60641).
+- `logm.m`: Fix check for real negative values in complex vector (bug #60738).
+- build: Set necessary flags to allow execution on Windows Vista (bug #60746).
+- Declare base_parser destructor virtual.
+- `hist.m`: Improve handling and docstring for third parameter "norm" (bug #60783).
+- `logm.m`: Allow tolerance in check for real negative values in complex vector (bug #60738).
+- `expm.m`, `logm.m`: Use function `isdiag` to detect if input is a diagonal matrix (bug #60738).
+- tests: Relax tolerance for some tests on macOS.
+- `logspace.m`: Mark tests as known to fail on macOS (bug #55538).
+- `hist.m`: Use deterministic test (bug #60783).
+- `rgb2ind.m`: Reduce memory usage and eliminate randomness in test.
+- `logm.m`: Allow larger tolerance for test on macOS.
+- build: Use correct path to `octave` binary in build tree on macOS.
+- build: Fix typo in folder to libraries when building `.oct` or `.mex` files.
+- build: Set DL_LDFLAGS in the build rules for .oct or .mex files.
+- `rgb2ind.m`: Suppress output in test.
+- Improve documentation for `log2` function (bug #60817).
+- `ind2sub`: Fix typo in "see also" section of docstring (bug #60842).
+- `mrdivide`, `mldivide`: Document that functions might return minimum norm solutions (bug #60839).
+- Fix scoping issue for handles to sibling nested functions (bug #60845).
+- `ls-mat5.cc`: Avoid integer overflow in calculation of buffer size for zlib (bug #55427).
+- Move top-level REPL from interpreter to evaluator.
+- Avoid crash with `dbquit` when executing command in terminal from GUI (bug #60813).
+
+### GUI
+
+- Fix calling external editor (bug #60198).
+- Fix missing file suffix .m when saving a new script (bug #60214).
+- Do not run files that are not saved as Octave files (bug #60214).
+- Fix confirm overwrite for native editor file "save as" dialogs (bug #60214).
+- Fix crash when GUI tries to restore missing previous Octave dir (bug #60255).
+- Fix restoring the horizontal position of docked GUI widgets (bug #59426).
+- Prevent floating widgets from re-opening after restart (bug #60279).
+- Avoid crash in GUI for `rmdir("")` (bug #60473).
+- Fix EOL mode when saving files under new names (bug #60585).
+- Fix auto indentation of switch-structure in GUI editor (bug #60649).
+- Avoid crash when closing GUI with open editor tabs (bug #60500).
+- `octave-qscintilla.cc` (`contextmenu_run`): Fix keyboard command handling.
+
+### Documentation
+
+- Improve Differential Equations chapter and example for lsode (bug #57508).
+- Clarify usage of "Depends" keyword in package `DESCRIPTION` file (bug #60053).
+- Add note that wildcard patterns for `save` are glob patterns (bug #60157).
+- Change example for Delaunay triangulation to match the generating code (bug #60216).
+- Document single precision issues with OpenGL graphics toolkits (bug #59418).
+- Minor changes to documentation of single precision issues with OpenGL (bug #59418).
+- Expand on documentation for command syntax (bug #60084).
+- `isprop.m`: Document that function only works on graphics objects in Octave 6.X (bug #60295).
+- Explain how to write dual-purpose executable scripts and Octave functions (bug #60291).
+- Update keyword docstrings (bug #60275).
+- Use Texinfo commands to improve `transpose()` docstring rendering.
+- `betainc.m`, `betaincinv.m`: Correct non-TeX definition of beta incomplete integral.
+- Grammarcheck documentation ahead of 6.3 release.
+- Spellcheck documentation ahead of 6.3 release.
+
+
+Summary of bugs fixed for version 6.2.0 (2021-02-19):
+----------------------------------------------------
+
+See: https://www.octave.org/news/release/2021/02/20/octave-6.2.0-released.html
+
+For (bug #XXXXX) see https://savannah.gnu.org/bugs/?XXXXX
+
+### Improvements
+
+- `bicgstab.m`, `cgs.m`: Fix typo in `"iter_min"` variable name (bug #60071).
+- Compute with `NA` correctly on MIPS architecture (bug #59830).
+- Fix lookup of `"caller"` stack frame (bug #59847).
+- Also wait on `main_thread` after interpreter shuts down (bug #56952).
+- Fix symbol lookup issue with anonymous functions (bug #55989).
+- Line buffer input in `terminal_reader` class.
+- `qr`: Error for dense `A` and `B` with three output arguments (bug #58944).
+- `strmatch.m`: Always return column vector for Matlab compatibility (bug #59917)
+- Avoid crash when `evalin` global variables into existence in script (bug #59937)
+- Avoid crash on null statement list (bug #59938).
+- Fix ignored output from user function in left side of assignment (bug #59704).
+- Temporarily set lvalue list to null (bug #59704).
+- `fminbnd.m`: do not ignore `"OutputFcn"` (bug #59901).
+- `load-path.cc`: Reduce number of times `"canonicalize_file_name"` is called (bug #59711).
+- `interpn.m`: Use `size_equal` for 10X speedup in cset 067b663529bb (bug #59856).
+- `interpn.m`: Fix check for scattered point coordinates (bug #59856).
+- Avoid `YYUSE` in Octave parser files (see bug #59806).
+- `struct2hdl.m`: Set `"units"` property early.
+- `load-path.cc`: Avoid copying string for loop variable.
+- `pcg.m`: Return correct `FLAG` and correct `RELRES` output (bug #59776).
+- Use static keyword on regexp pattern in `file_stat` (bug #59706).
+- `stat`: Improve regular expression for UNC roots on Windows (bug #59706).
+- `stat`: Use `"make_absolute"` instead of `"canonicalize_file_name"` on Windows (bug #59706).
+- Improve `class_simple` function handle function lookup (bug #59661).
+- `hdl2struct.m`: store hidden text properties (bug #57241).
+- Mark script created with commands from history as modified.
+- `replem.m`: Fix operations with sparse matrices (bug #59705).
+- `ode_event_handler.m`: Fix mishandling of event edge types and multiple events (bug #59709).
+- Increase size of dynamic variable `new_argv` by 1 to avoid indexing out of array.
+- Fix incorrect results for set functions with `"legacy"` option (bug #59708).
+- `dir.m`: Return folder (not including file) in field `"folder"` (bug #59689).
+- Avoid memory leak with function handles (bug #59659).
+- Avoid dispatch error if method argument is a function handle (bug #59617).
+- Avoid crash due to accessing first element of empty list (bug #59656).
+- Don't propagate prevailing `isargout` info through `mexCallMATLAB` (bug #59597).
+- Show original error when failing to create a graphics object (bug #59620).
+- Fix regression with superclass lookup in classdef constructors (bug #59602).
+- Allow Octave class `execution_exception` to catch `std::exception` objects (bug #59592).
+
+### GUI
+
+- Fix restoring editor session after having closed all tabs (bug #60051).
+- Maybe convert TAB to SPC in GUI terminal pasted text (bug #59916).
+- Make bracketed paste mode work in GUI terminal.
+- Fix regression in variable editor when printing without selection.
+- Avoid gui when octave is launched in non-interactive mode (bug #59628).
+- `file-editor-tab.cc` (dtor): do not delete `m_edit_area` (bug #59628).
+- Fix error when restoring previous main window layout (bug #59426).
+- Improve default sizes of gui dock widgets.
+- Clean up constructing main window layout of the gui.
+- Fix focus command window after command execution (bug #59609).
+- Check object size before plotting from variable editor (bug #56685).
+- `documentation.cc`: Include missing header (bug #59553).
+
+### Build system / Tests
+
+- Add default value to `OCTAVE_MIPS_NAN` configure macro for cross-compiling (bug #59830).
+- tests: Function name should match file name (bug #59704).
+- Avoid build errors with Qt4 (bug #59813).
+- eigs.m: Make tests that depend on CHOLMOD conditional.
+- tests: Make tests that depend on CXSparse conditional.
+- build: Use `SPARSE_XCPPFLAGS` in `CPP_FLAGS` for libcorefcn (bug #59806).
+- Add test case for bug #59661.
+- `hgsave.m`: Allow test to run with qt or gnuplot graphics toolkits (bug #57241).
+
+### Documentation
+
+- `embedded.cc`: Fix syntax error interpreter shutdown.
+- Update Octave Project Developers copyright for the new year.
+- Use the same comment style for copyright headers in .m files and shell scripts.
+
+
+Summary of important user-visible changes for version 6.1.0 (2020-11-26):
+------------------------------------------------------------------------
+
+### General improvements
+
+- The `intersect`, `setdiff`, `setxor`, `union`, and `unique` functions
+ accept a new sorting option `"stable"` which will return output values
+ in the same order as the input, rather than in ascending order.
+
+- Complex RESTful web services can now be accessed by the `webread` and
+ `webwrite` functions alongside with the `weboptions` structure. One
+ major feature is the support for cookies to enable RESTful
+ communication with the web service.
+
+ Additionally, the system web browser can be opened by the `web`
+ function.
+
+- The `linspace` function now produces symmetrical sequences when the
+ endpoints are symmetric. This is more intuitive and also compatible
+ with recent changes made in Matlab R2019b.
+
+- The underlying algorithm of the `rand` function has been changed.
+ For single precision outputs, the algorithm has been fixed so that it
+ produces values strictly in the range (0, 1). Previously, it could
+ occasionally generate the right endpoint value of 1 (See bug #41742).
+ In addition, the new implementation uses a uniform interval between
+ floating point values in the range (0, 1) rather than targeting a
+ uniform density (# of random integers / length along real number
+ line).
+
+- Numerical integration has been improved. The `quadv` function has
+ been re-written so that it can compute integrands of periodic
+ functions. At the same time, performance is better with ~3.5X fewer
+ function evaluations required. A bug in `quadgk` that caused complex
+ path integrals specified with `"Waypoints"` to occasionally be
+ calculated in the opposite direction was fixed.
+
+- The `edit` function option `"editinplace"` now defaults to `true` and
+ the option `"home"` now defaults to the empty matrix `[]`. Files will
+ no longer be copied to the user's HOME directory for editing. The old
+ behavior can be restored by setting `"editinplace"` to `false` and
+ `"home"` to `"~/octave"`.
+
+- The `format` command supports two new options: `uppercase` and
+ `lowercase` (default). With the default, print a lowercase 'e' for
+ the exponent character in scientific notation and lowercase 'a-f' for
+ the hex digits representing 10-15. With `uppercase`, print 'E' and
+ 'A-F' instead. The previous uppercase formats, `E` and `G`, no longer
+ control the case of the output.
+
+ Additionally, the `format` command can be called with multiple options
+ for controlling the format, spacing, and case in arbitrary order.
+ For example:
+
+ format long e uppercase loose
+
+ Note, in the case of multiple competing format options the rightmost
+ one is used, and, in case of an error, the previous format remains
+ unchanged.
+
+- L-value references (e.g., increment (++), decrement (--), and all
+ in-place assignment operators (+=, -=, *=, /=, etc.)) are no longer
+ allowed in anonymous functions.
+
+- New warnings have been added about questionable uses of the colon ':'
+ range operator. Each has a new warning ID so that it can be disabled
+ if desired.
+
+ > `Octave:colon-complex-argument` : when any arg is complex
+ > `Octave:colon-nonscalar-argument` : when any arg is non-scalar
+
+- The `regexp` and related functions now correctly handle and *require*
+ strings in UTF-8 encoding. As with any other function that requires
+ strings to be encoded in Octave's native encoding, you can use
+ `native2unicode` to convert from your preferred locale. For example,
+ the copyright symbol in UTF-8 is `native2unicode (169, "latin1")`.
+
+- The startup file `octaverc` can now be located in the platform
+ dependent location for user local configuration files (e.g.,
+ ${XDG_CONFIG_HOME}/octave/octaverc on Unix-like operating systems or
+ %APPDATA%\octave\octaverc on Windows).
+
+- `pkg describe` now lists dependencies and inverse dependencies
+ (i.e., other installed packages that depend on the package in
+ question).
+
+- `pkg test` now tests all functions in a package.
+
+- When unloading a package, `pkg` now checks if any remaining loaded
+ packages depend on the one to be removed. If this is the case `pkg`
+ aborts with an explanatory error message. This behavior can be
+ overridden with the `-nodeps` option.
+
+- The command
+
+ dbstop in CLASS at METHOD
+
+ now works to set breakpoints in classdef constructors and methods.
+
+#### Graphics backend
+
+- The use of Qt4 for graphics and the GUI is deprecated in Octave
+ version 6 and no further bug fixes will be made. Qt4 support will be
+ removed completely in Octave version 7.
+
+- The `legend` function has been entirely rewritten. This fixes a
+ number of historical bugs, and also implements new properties such as
+ `"AutoUpdate"` and `"NumColumns"`. The gnuplot toolkit---which is no
+ longer actively maintained---still uses the old legend function.
+
+- The `axis` function was updated which resolved 10 bugs affecting
+ axes to which `"equal"` had been applied.
+
+- Graphic primitives now accept a color property value of `"none"`
+ which is useful when a particular primitive needs to be hidden
+ (for example, the Y-axis of an axes object with `"ycolor" = "none"`)
+ without hiding the entire primitive `"visibility" = "off"`.
+
+- A new property `"FontSmoothing"` has been added to text and axes
+ objects that controls whether anti-aliasing is used during the
+ rendering of characters. The default is `"on"` which produces smooth,
+ more visually appealing text.
+
+- The figure property `"windowscrollwheelfcn"`is now implemented.
+ This makes it possible to provide a callback function to be executed
+ when users manipulate the mouse wheel on a given figure.
+
+- The figure properties `"pointer"`, `"pointershapecdata"`, and
+ `"pointershapehotspot"` are now implemented. This makes it possible
+ to change the shape of the cursor (pointer in Matlab-speak) displayed
+ in a plot window.
+
+- The figure property `"paperpositionmode"` now has the default `"auto"`
+ rather than `"manual"`. This change is more intuitive and is
+ Matlab compatible.
+
+- The appearance of patterned lines `"LineStyle" = ":"|"--"|"-."` has
+ been improved for small widths (`"LineWidth"` less than 1.5 pixels)
+ which is a common scenario.
+
+- Printing to EPS files now uses a tight bounding box (`"-tight"`
+ argument to print) by default. This makes more sense for EPS
+ files which are normally embedded within other documents, and is
+ Matlab compatible. If necessary use the `"-loose"` option to
+ reproduce figures as they appeared in previous versions of Octave.
+
+- The following print devices are no longer officially supported: cdr,
+ corel, aifm, ill, cgm, hpgl, mf and dxf. A warning will be thrown
+ when using those devices, and the code for supporting those formats
+ will eventually be removed from a future version of Octave.
+
+- The placement of text subscripts and superscripts has been
+ re-engineered and now produces visually attractive results similar to
+ Latex.
+
+### Matlab compatibility
+
+- The function `unique` now returns column index vectors for the second
+ and third outputs. When duplicate values are present, the default
+ index to return is now the `"first"` occurrence. The previous Octave
+ behavior, or Matlab behavior from releases prior to R2012b, can be
+ obtained by using the `"legacy"` flag.
+
+- The function `setdiff` with the `"rows"` argument now returns Matlab
+ compatible results. The previous Octave behavior, or Matlab behavior
+ from releases prior to R2012b, can be obtained by using the `"legacy"`
+ flag.
+
+- The functions `intersect`, `setxor`, and `union` now accept a
+ `"legacy"` flag which changes the index values (second and third
+ outputs) as well as the orientation of all outputs to match Matlab
+ releases prior to R2012b.
+
+- The function `streamtube` is Matlab compatible and plots tubes along
+ streamlines which are scaled by the vector field divergence. The
+ Octave-only extension `ostreamtube` can be used to visualize the flow
+ expansion and contraction of the vector field due to the local
+ crossflow divergence.
+
+- The interpreter now supports handles to nested functions.
+
+- The graphics properties `"LineWidth"` and `"MarkerSize"` are now
+ measured in points, *not* pixels. Compared to previous versions
+ of Octave, some lines and markers will appear 4/3 larger.
+
+- The meta.class property "SuperClassList" has been renamed
+ "Superclasslist" for Matlab compatibility. The original name will
+ exist as an alias until Octave version 8.1.
+
+- Inline functions created by the function `inline` are now of type
+ "inline" when interrogated with the `class` function. In previous
+ versions of Octave, the class returned was "function_handle". This
+ change is Matlab compatible. Inline functions are deprecated in
+ both Matlab and Octave and support may eventually be removed.
+ Anonymous functions can be used to replace all instances of inline
+ functions.
+
+- The function `javaaddpath` now prepends new directories to the
+ existing dynamic classpath by default. To append them instead, use
+ the new `"-end"` argument. Multiple directories may now be specified
+ in a cell array of strings.
+
+- An undocumented function `gui_mainfcn` has been added, for compatibility
+ with figures created with Matlab's GUIDE.
+
+- Several validator functions of type `mustBe*` have been added. See
+ the list of new functions below.
+
+### Alphabetical list of new functions added in Octave 6
+
+* `auto_repeat_debug_command`
+* `commandhistory`
+* `commandwindow`
+* `filebrowser`
+* `is_same_file`
+* `lightangle`
+* `mustBeFinite`
+* `mustBeGreaterThan`
+* `mustBeGreaterThanOrEqual`
+* `mustBeInteger`
+* `mustBeLessThan`
+* `mustBeLessThanOrEqual`
+* `mustBeMember`
+* `mustBeNegative`
+* `mustBeNonempty`
+* `mustBeNonNan`
+* `mustBeNonnegative`
+* `mustBeNonpositive`
+* `mustBeNonsparse`
+* `mustBeNonzero`
+* `mustBeNumeric`
+* `mustBeNumericOrLogical`
+* `mustBePositive`
+* `mustBeReal`
+* `namedargs2cell`
+* `newline`
+* `ode23s`
+* `ostreamtube`
+* `rescale`
+* `rotx`
+* `roty`
+* `rotz`
+* `stream2`
+* `stream3`
+* `streamline`
+* `streamtube`
+* `uisetfont`
+* `verLessThan`
+* `web`
+* `weboptions`
+* `webread`
+* `webwrite`
+* `workspace`
+
+
+### Deprecated functions and properties
+
+The following functions and properties have been deprecated in Octave 6
+and will be removed from Octave 8 (or whatever version is the second
+major release after 6):
+
+- Functions
+
+ Function | Replacement
+ -----------------------|------------------
+ `runtests` | `oruntests`
+
+- Properties
+
+ Object | Property | Value
+ -----------------|---------------|------------
+ | |
+
+- The environment variable used by `mkoctfile` for linker flags is now
+ `LDFLAGS` rather than `LFLAGS`. `LFLAGS` is deprecated, and a warning
+ is emitted if it is used, but it will continue to work.
+
+
+### Removed functions and properties
+
+The following functions and properties were deprecated in Octave 4.4
+and have been removed from Octave 6.
+
+- Functions
+
+ Function | Replacement
+ ---------------------|------------------
+ `chop` | `sprintf` for visual results
+ `desktop` | `isguirunning`
+ `tmpnam` | `tempname`
+ `toascii` | `double`
+ `java2mat` | `__java2mat__`
+
+- Properties
+
+ Object | Property | Value
+ ---------------------|---------------------------|-----------------------
+ `annotation` | `edgecolor ("rectangle")` |
+ `axes` | `drawmode` |
+ `figure` | `doublebuffer` |
+ | `mincolormap` |
+ | `wvisual` |
+ | `wvisualmode` |
+ | `xdisplay` |
+ | `xvisual` |
+ | `xvisualmode` |
+ `line` | `interpreter` |
+ `patch` | `interpreter` |
+ `surface` | `interpreter` |
+ `text` | `fontweight` | `"demi"` and `"light"`
+ `uibuttongroup` | `fontweight` | `"demi"` and `"light"`
+ `uicontrol` | `fontweight` | `"demi"` and `"light"`
+ `uipanel` | `fontweight` | `"demi"` and `"light"`
+ `uitable` | `fontweight` | `"demi"` and `"light"`
+
+
+### Old release news
+
+- [Octave 5.x](etc/NEWS.5)
+- [Octave 4.x](etc/NEWS.4)
+- [Octave 3.x](etc/NEWS.3)
+- [Octave 2.x](etc/NEWS.2)
+- [Octave 1.x](etc/NEWS.1)
diff -r 7ecd07721cca -r 86ddba86efbe etc/NEWS.7.md
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/NEWS.7.md Wed Dec 08 22:43:24 2021 +0900
@@ -0,0 +1,409 @@
+Summary of important user-visible changes for version 7 (yyyy-mm-dd):
+----------------------------------------------------------------------
+
+### General improvements
+
+- Many functions in Octave can be called in a command form---no
+parentheses for invocation and no return argument assignment---or in a
+functional form---parentheses and '=' for assignment of return values.
+
+ **Command Form Example**
+
+ `mkdir new_directory`
+
+ **Function Form Example**
+
+ `status = mkdir ("new_directory")`
+
+ Octave now handles errors that occur in a consistent manner. If
+ called in command form and there is a failure, an error is thrown
+ and a message printed. If called in functional form, no error or
+ message is printed and the failure is communicated to the programmer
+ via the output status variable.
+
+ The following list of functions have been modified.
+
+ * `copyfile`
+ * `fcntl`
+ * `fileattrib`
+ * `kill`
+ * `link`
+ * `mkfifo`
+ * `movefile`
+ * `rename`
+ * `rmdir`
+ * `symlink`
+ * `unlink`
+
+- Calling a user-defined function with too many inputs or outputs is now
+an error. The interpreter makes this check automatically. If a
+function uses varargin then the check is skipped for function inputs,
+and if a function uses varargout then the check is skipped for function
+outputs. Input validation for functions typically begins with checking
+that the number of inputs and outputs match expectations. Existing code
+can be simplified by removing these checks which are now done by the
+interpreter. Typically, code blocks like the following can simply be
+deleted.
+
+ ## Checking number of inputs
+ if (nargin > 2)
+ print_usage ();
+ endif
+
+ ## Checking number of outputs
+ if (nargout > 1)
+ print_usage ();
+ endif
+
+- Binary and hexadecimal constants like `0b101` and `0xDEADBEEF` now
+create integers (unsigned by default) with sizes determined from the
+number of digits present. For example, `0xff` creates a `uint8` value
+and `0xDEADBEEF` creates a `uint64` value. You may also use a suffix of
+the form `u8`, `u16`, `u32`, `u64`, `s8`, `s16`, `s32`, or `s64` to
+explicitly specify the data type to use (`u` or `s` to indicate unsigned
+or signed and the number to indicate the integer size).
+
+ Binary constants are limited to 64 binary digits and hexadecimal
+constants are limited to 16 hexadecimal digits with no automatic
+rounding or conversion to floating point values. Note that this may
+cause problems in existing code. For example, an expression like
+`[0x1; 0x100; 0x10000]` will be uint8 (because of the rules of
+concatenating integers of different sizes) with the larger values
+truncated (because of the saturation semantics of integer values). To
+avoid these kinds of problems either: 1) declare the first integer to be
+of the desired size such as `[0x1u32; 0x100; 0x10000]`, or 2) pad
+constants in array expressions with leading zeros so that they use the
+same number of digits for each value such as
+`[0x00_00_01; 0x00_01_00; 0x01_00_00]`.
+
+- The increment and decrement operators `++` and `--` must "hug" their
+corresponding variables. In previous versions of Octave, whitespaces
+between these operators and the variable they affect were allowed. That
+is no longer the case.
+
+- The `mldivide` function (i.e., the `\` operator) now uses an LU
+decomposition to solve nearly singular full square matrices. This is
+Matlab-compatible and yields results which more nearly minimize `norm
+(A*x - b)`. Previously, Octave computed a minimum-norm solution.
+
+- The `factor` function has been overhauled for speed. For large
+inputs > 1e14, it can be up to 10,000 times faster.
+
+- The `isprime` function uses a new primality testing algorithm
+that is up to 50,000 times faster for inputs > 1e14.
+
+- The `betainc` function now calculates an exact output for the
+important special cases where a or b are 1.
+
+- The `whos` function now displays an additional attribute 's' when
+the variable is a sparse type.
+
+- As part of GSoC 2020, Abdallah K. Elshamy implemented the
+`jsondecode` and `jsonencode` functions to read and write JSON data.
+
+- As part of GSoC 2021, Abdallah K. Elshamy implemented the
+`jupyter_notebook` classdef class. This class supports running and
+filling Jupyter Notebooks using the Octave language kernel from Octave
+itself. Making the evaluation of long-running Jupyter Notebooks on a
+computing server without permanent browser connection possible.
+
+- By default, the history file is now located at $DATA/octave/history,
+where $DATA is a platform dependent location for (roaming) user data
+files (e.g., ${XDG_DATA_HOME} or, if that is not set, ~/.local/share on
+Unix-like operating systems or %APPDATA% on Windows).
+
+- For Octave on Windows OS, the minimum required version of the Windows
+API is now 6.1 (Windows 7 or newer).
+
+- The non-re-entrant version of the QHull library "libqhull" was
+deprecated upstream. Octave now (optionally) requires the re-entrant
+version of that library "libqhull_r" instead.
+
+- Octave's libraries are now built using symbol visibility by default.
+That means that less symbols are exported from these libraries.
+Configure with `--disable-lib-visibility-flags` to export all symbols
+(as in previous versions).
+
+- Octave's build system no longer appends "++" to the end of the
+"magick++" library name (set with the `--with-magick=` configure flag).
+The real name of the "magick++" library (including any potentially
+trailing "++") needs to be set in that option now.
+
+- The `pkg update` command now accepts options that are passed to `pkg
+install` for each updated package. Specifying @option{-local} or
+@option{-global} will restrict update checks to local or global
+installed packages, respectively.
+
+### Graphical User Interface
+
+- The graphical user interface is now available in Hungarian and
+Turkish.
+
+- In debug mode, symbol values are now shown in tooltips when hovering
+variables in the editor panel.
+
+- The "Disable global shortcuts when Command Window has focus" GUI
+preference under the Shortcuts tab is now disabled by default. This
+option disables keyboard shortcuts to avoid interference with readline
+key strokes in the Command Window. Unlike versions prior to Octave 7,
+this preference now also affects the Ctrl-C/V shortcuts for copy/paste.
+
+### Graphics backend
+
+- Support for Qt4 for both graphics and the GUI has been removed.
+
+- If a working LaTeX tool chain is found on the path, including `latex`,
+`dvipng`, and `dvisvgm` binaries, then text strings can now be rendered
+properly when using the `"latex"` value for the text objects'
+`"interpreter"` property and axes objects' `"ticklabelinterpreter"`.
+Type `doc "latex interpreter"` for further info.
+
+- The `"Marker"` property for plot objects now accepts `|` which draws
+a vertical line or `_` which draws a horizontal line.
+
+- The `FMT` format argument for plot commands now accepts long forms for
+color names which may be more understandable than the existing
+one-letter codes. For example, the RGB value `[0 0 0]` can now be
+specified by `"black"` in addition to `"k"`.
+
+- The color graphics properties, for example `"EdgeColor"` or
+`"FaceColor"`, now accept HTML specifications. An HTML specification is
+a string that begins with the character '#' and is followed by either 3
+or 6 hexadecimal digits. For example, magenta which is 100% red and
+blue values can specified by `"#FF00FF"` or `"#F0F"`.
+
+- The additional property `"contextmenu"` has been added to all graphics
+objects. It is equivalent to the previously used `"uicontextmenu"`
+property which is hidden now.
+
+- `uicontrol` objects now fully implement the `"Off"` and `"Inactive"`
+values of the `"Enable"` property. When the value is `"Off"`, no
+interaction with the object occurs and the `uicontrol` changes color
+(typically to gray) to indicate it is disabled. When the value is
+`"Inactive"`, the object appears normally (no change in color), but it
+is not possible to change the value of the object (such as modifying
+text in an `Edit` box or clicking on a `RadioButton`).
+
+- The `"ListBoxTop"` property for `uicontrol` objects has been
+implemented for `set` commands.
+
+- The `Title` property for print formats such as PDF or SVG is now set
+to the title displayed on the figure window which contains the plot.
+
+- Additional properties have been added to the `axes` graphics object:
+ * `"alphamap"` (not yet implemented)
+ * `"alphascale"` (not yet implemented)
+ * `"colorscale"` (not yet implemented)
+ * `"fontsizemode"` (not yet implemented)
+ * `"innerposition"` (equivalent to `"position"`)
+ * `"interactions"` (not yet implemented)
+ * `"layout"` (not yet implemented)
+ * `"legend"` (not yet implemented)
+ * `"nextseriesindex"` (read-only, used by `scatter`
+ graphics objects)
+ * `"positionconstraint"` (replacement for `"activepositionproperty"`
+ which is now a hidden property. No plans for removal.)
+ * `"toolbar"` (not yet implemented)
+ * `"xaxis"` (not yet implemented)
+ * `"yaxis"` (not yet implemented)
+ * `"zaxis"` (not yet implemented)
+
+### Matlab compatibility
+
+- The function `griddata` now implements the `"v4"` Biharmonic Spline
+Interpolation method. In adddition, the function now accepts 3-D inputs
+by passing the data to `griddata3`.
+
+- Coordinate transformation functions `cart2sph`, `sph2cart`,
+`cart2pol`, and `pol2cart` now accept either row or column vectors for
+coordinate inputs. A single coordinate matrix with one variable per
+column can still be used as function input, but a single output variable
+will now contain just the first output coordinate, and will no longer
+return the full output coordinate matrix. Output size matches the size
+of input vectors, or in the case of an input matrix will be column
+vectors with rows corresponding to the input coordinate matrix.
+
+- The function `dec2bin` and `dec2hex` now support negative numbers.
+
+- The function `factor` now supports uint64 inputs larger than
+`flintmax`.
+
+- The function `primes` now supports char inputs.
+
+- The functions `quantile` and `prctile` now permit operating on
+dimensions greater than `ndims (x)`.
+
+- The function `iqr` now uses Matlab compatible interpolation for
+quantile values. The dimension input now allows a vector, "all", and
+dimensions greater than `ndims (x)`. The function also handles
+`Inf` and `NaN` input values in a Matlab-compatible manner.
+
+- The function `importdata` now produces more compatible results when
+the file contains a 2-D text matrix.
+
+- The file functions `copyfile`, `mkdir`, `movefile`, `rmdir` now return
+a logical value (true/false) rather than a numeric value (1/0).
+
+- `uimenu` now accepts property `"Text"` which is identical to
+`"Label"`. Matlab recommends using `"Text"` in new code, although there
+is no announced date for deprecating `"Label"`.
+
+- The functions `scatter` and `scatter3` now return a handle to a
+scatter graphics object. For compatibility, they return an `hggroup` of
+patch graphics objects when the `"gnuplot"` graphics toolkit is used. In
+previous versions of Octave, these functions returned an `hggroup` of
+patch graphics objects for all graphics toolkits.
+
+- The functions `bar` and `barh` now handle stacked negative bar values
+in a Matlab-compatible manner. Negative values now stack below the zero
+axis independently of a positive value bars in the same stack.
+Previously the negative bars could overlap positive bars depending on
+drawing order.
+
+- The functions `bar` and `barh` now use colors from the `"ColorOrder"`
+axes property rather than the `"Colormap"` figure property unless one
+of the histogram options (@qcode{"hist"}, @qcode{"histc"} was specified.
+
+- The function `saveas` now defaults to saving in Octave figure format
+(.ofig) rather than PDF (.pdf).
+
+- A new warning ID (`"Octave:unimplemented-matlab-functionality"`) has
+been added which prints a warning when Octave's parser recognizes valid
+Matlab code, but for which Octave does not yet implement the
+functionality. By default, this warning is enabled.
+
+- When Octave is started with the `--traditional` option for maximum
+compatibility the `print_struct_array_contents` internal variable is set
+to true.
+
+- The function `repelem` now produces a row vector output when the input is
+a scalar.
+
+- The functions `var` and `std` now accept a weight vector as input and
+compute the weigthed variance. Dimension input now allows a vector and
+the keyword "all".
+
+### Alphabetical list of new functions added in Octave 7
+
+* `cospi`
+* `getpixelposition`
+* `endsWith`
+* `fill3`
+* `jsondecode`
+* `jsonencode`
+* `jupyter_notebook`
+* `listfonts`
+* `matlab.net.base64decode`
+* `matlab.net.base64encode`
+* `memory`
+* `ordqz`
+* `rng`
+* `sinpi`
+* `startsWith`
+* `streamribbon`
+* `turbo`
+* `uniquetol`
+* `xtickangle`
+* `ytickangle`
+* `ztickangle`
+
+### Deprecated functions, properties, and operators
+
+The following functions and properties have been deprecated in Octave 7
+and will be removed from Octave 9 (or whatever version is the second
+major release after 7):
+
+- Functions
+
+ Function | Replacement
+ -------------------------- |----------------------------
+ disable_diagonal_matrix | optimize_diagonal_matrix
+ disable_permutation_matrix | optimize_permutation_matrix
+ disable_range | optimize_range
+
+- Properties
+
+ Object | Property | Value
+ -----------------|---------------|------------
+ | |
+- Operators
+
+ Operator | Replacement | Description
+ ---------|-------------|------------
+ ** | ^ | Matrix exponent
+ .** | .^ | Element-by-element exponent
+ .+ | + | Element-by-element exponent
+ .- | - | Element-by-element exponent
+
+- Interpreter
+
+ * The use of `'...'` for line continuations *inside* double-quoted
+ strings has been deprecated. Use `'\'` for line continuations
+ inside strings instead.
+
+ * The use of `'\'` as a line continuation *outside* of double-quoted
+ strings has been deprecated. Use `'...'` for line continuations
+ instead.
+
+ * Any trailing whitespace after a `'\'` line continuation has been
+ deprecated. Delete unnecessary trailing whitespace.
+
+
+The following functions were deprecated in Octave 6 and will be removed
+from Octave 8 (or whatever version is the second major release after 6):
+
+- Functions
+
+ Function | Replacement
+ -----------------------|------------------
+ `runtests` | `oruntests`
+
+- The environment variable used by `mkoctfile` for linker flags is now
+ `LDFLAGS` rather than `LFLAGS`. `LFLAGS` was deprecated in Octave 6,
+ and a warning is now emitted if it is used, but it will continue to
+ work.
+
+
+### Removed functions, properties, and features
+
+The following functions and properties were deprecated in Octave 5
+and have been removed from Octave 7.
+
+- Functions
+
+ Function | Replacement
+ -------------------------|------------------
+ `output_max_field_width` | `output_precision`
+ `is_keyword` | `iskeyword`
+
+- Properties
+
+ Object | Property | Value
+ -----------------|---------------|------------
+ `text` | `fontangle` | `"oblique"`
+ `uibuttongroup` | `fontangle` | `"oblique"`
+ `uicontrol` | `fontangle` | `"oblique"`
+ `uipanel` | `fontangle` | `"oblique"`
+ `uitable` | `fontangle` | `"oblique"`
+
+- The prototype JIT compiler has been removed from Octave. Since it was
+first added as part of a Google Summer of Code project in 2012, no one
+has ever seriously taken on further development of it and it still does
+nothing significant. It is out of date with the default interpreter
+that walks the parse tree. Even though we have fixed the configure
+script to disable it by default, people still ask questions about how to
+build it, but it doesn’t seem that they are doing that to work on it but
+because they think it will make Octave code run faster (it never did,
+except for some extremely simple bits of code as examples for
+demonstration purposes only). The following functions related to the
+JIT compiler have also been removed: `debug_jit`, `jit_enable`,
+`jit_failcnt`, and `jit_startcnt`.
+
+### Old release news
+
+- [Octave 6.x](etc/NEWS.6)
+- [Octave 5.x](etc/NEWS.5)
+- [Octave 4.x](etc/NEWS.4)
+- [Octave 3.x](etc/NEWS.3)
+- [Octave 2.x](etc/NEWS.2)
+- [Octave 1.x](etc/NEWS.1)
diff -r 7ecd07721cca -r 86ddba86efbe etc/PROJECTS
--- a/etc/PROJECTS Tue Dec 07 16:20:15 2021 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-Octave PROJECTS
-===============
-
-A list of proposed projects is maintained at:
-
- https://wiki.octave.org/Projects
-
-If you start working steadily on a project, please let
-maintainers@octave.org know. We might have information that could help
-you. You should also read the Contributing Guidelines chapter in the
-Octave manual.
diff -r 7ecd07721cca -r 86ddba86efbe etc/RELEASE.BUG_FIX_LIST
--- a/etc/RELEASE.BUG_FIX_LIST Tue Dec 07 16:20:15 2021 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-The following bugs must be fixed prior to the next release. See also the [[6.0.0 Release Checklist]].
-
-Sign up for a bug by filling in the Owner field so people won't duplicate each other's work.
-
-Use
...
to cross an item off the list when it has been done.
-
-Add
WON'T FIX
and the strike through tag for any bugs that will not be fixed in this round.
-
-__TOC__
-
-----
-
-== Bugs marked as Crash ==
-
-== Bugs marked Configuration and Build System ==
-
-== Bugs with severity >= 4 ==
-
-== Bugs marked as regressions ==
-
-== Other Bugs ==
-
-== Potentially excluded bugs ==
-These bugs have been provisionally decided not to be blockers for 6.0.0. That doesn't mean they can't be fixed, if someone wants to fix them.
diff -r 7ecd07721cca -r 86ddba86efbe etc/RELEASE.CHECKLIST
--- a/etc/RELEASE.CHECKLIST Tue Dec 07 16:20:15 2021 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,112 +0,0 @@
-
-
-
-==6.0.0 Release Tasks==
-
-
-# Update gnulib to latest version
-#: Must occur first as it could resolve existing, or create new, bug reports
-#: Completion Date:
-
-# File bug reports for all outstanding bugs known, but not reported
-#* Put out a general call for reports on Octave-Maintainers and Octave-Help list
-#: Completion Date:
-
-# Review patch tracker/bug list for any patches submitted that may be included before release
-#: Completion Date:
-
-# Identify Bugs which *must* be fixed prior to release
-#* Review bugs on tracker for possible inclusion in list
-#* Review bugs and update to correct category, such as Patch submitted
-#: Completion Date:
-
-# Clear all bugs identified as must-fix
-#* See [[Bug Fix List - 6.0 Release]]
-#: Completion Date:
-
-# GPL License activities
-#* Update Copyright statements for all source controlled files
-#* Update dates in any other locations (launch message, citation, MXE files, etc.)
-#* Add any new contributors to contributors.in
-#: Completion Date:
-
-# Style-check code base
-#* This will produce lots of whitespace changes, but no behavior changes
-#* Must occur after patches have been added since whitespace changes can prevent patches from applying
-#* m-file style check. Completion Date:
-#* C++ style check. Completion Date:
-
-# Run lint checker on code base
-#* Possibilities include compiling with -fsanitize=undefined and running 'make check', cppcheck, etc.
-#: Completion Date:
-
-# Verify 'make check' is passing on all buildbot combinations of OS and compilers
-#* Start discussion on octave-maintainers list about which failing tests must be fixed
-#* Identify and fix any tests determined critical in step above
-#: Completion Date:
-
-# Compile and run Octave test suite with --enable-address-sanitizer-flags to check for memory leaks
-#* Results posted to bug report:
-#: Completion Date:
-
-# Review documentation
-#* Grammar check documentation so that it conforms to Octave standards
-#* Spell check documentation
-#* Verify no functions missing from manual
-#* Verify deprecated functions removed from "see also" links
-#* Verify all formats (Info, HTML, pdf) build correctly
-#* Review NEWS for any features which should be announced
-#* Update major version number in "@subtitle Edition XXX" in octave.texi
-#: Completion Date:
-
-# Localization and Internationalization
-#* Update language translation files (*.ts)
-#* Create issue report on Savannah as a centralized location for uploading files
-#* Submit call for translations for GUI strings
-#: Completion Date:
-
-# Update shared library and oct file API version numbers
-#* Increment oct file API version number (configure.ac:OCTAVE_API_VERSION, increment number and drop "+" suffix)
-#* Increment libtool versioning (liboctave/module.mk:%canon_reldir%_%canon_reldir%_current, libinterp/module.mk:%canon_reldir%_liboctinterp_current, libgui/module.mk:%canon_reldir%_liboctgui_current)
-#: Completion Date:
-
-# Verify build process and create release candidates
-#* Update configure.ac with new version information
-#** Update AC_INIT, OCTAVE_MAJOR_VERSION, OCTAVE_MINOR_VERSION, OCTAVE_PATCH_VERSION, OCTAVE_RELEASE_DATE
-#* Verify 'make distcheck' passes
-#* Create release candidate
-#** 'make dist'
-#** hg tag repository with release candidate ID
-#** For Windows, create installer [[Windows Installer]]
-#** Upload release candidate
-#** Add release candidate version to Savannah bug tracker
-#** Announce release candidate to Octave-Maintainers, Octave-Help, on web page
-#** Repeat release candidate cycle until clean
-#: Completion Date:
-
-# Final Release
-#* Update version information
-#** Update configure.ac (AC_INIT, OCTAVE_MAJOR_VERSION, OCTAVE_MINOR_VERSION, OCTAVE_PATCH_VERSION, OCTAVE_RELEASE_DATE)
-#** Update NEWS (final release date)
-#** Update CITATION (version, year, URL)
-#** Update org.octave.Octave.appdata.xml (version number and release date)
-#* hg tag repository with release version number
-#* merge default onto stable to become the current stable release
-#* Savannah bug tracker version info
-#** add new release version to bug tracker
-#** remove release candidate versions from bug tracker
-#* Announce final release on Octave mailing lists and web site
-#: Completion Date:
-
-# Post-Release
-#* Update configure.ac (AC_INIT, OCTAVE_MAJOR_VERSION, OCTAVE_MINOR_VERSION, OCTAVE_PATCH_VERSION) to next release cycle
-#* Update oct file API version number (configure.ac:OCTAVE_API_VERSION, add "+" suffix)
-#* Remove all deprecated functions (either OCTAVE_DEPRECATED in C++ or scripts/deprecated for m-files) scheduled for deletion in default branch
-#* Move NEWS file to backup in etc/NEWS.X
-#* Create new NEWS file
-#: Completion Date:
-
-[[Category:Releases]]
-[[Category:Development]]
diff -r 7ecd07721cca -r 86ddba86efbe etc/module.mk
--- a/etc/module.mk Tue Dec 07 16:20:15 2021 +0100
+++ b/etc/module.mk Wed Dec 08 22:43:24 2021 +0900
@@ -5,13 +5,13 @@
%canon_reldir%_MAINTAINERCLEANFILES =
%canon_reldir%_EXTRA_DIST += \
- %reldir%/NEWS.1 \
- %reldir%/NEWS.2 \
- %reldir%/NEWS.3 \
- %reldir%/NEWS.4 \
- %reldir%/NEWS.5 \
- %reldir%/NEWS.6 \
- %reldir%/PROJECTS \
+ %reldir%/NEWS.1.md \
+ %reldir%/NEWS.2.md \
+ %reldir%/NEWS.3.md \
+ %reldir%/NEWS.4.md \
+ %reldir%/NEWS.5.md \
+ %reldir%/NEWS.6.md \
+ %reldir%/NEWS.7.md \
%reldir%/gdbinit
%canon_reldir%_EXTRA_DIST += \