# HG changeset patch # User Kai T. Ohlhus # Date 1638942523 -32400 # Node ID fa4c560d1b921340b0a4a206f5375925845faba2 # Parent 0e553bb97d31a7948cb907d74cb7bf3cdf71abdf build: make etc/NEWS.x.md and etc/CHECKLIST Markdown files. * Makefile.am: Improve build rule for future changes. * etc/CHECKLIST, etc/NEWS.1, etc/NEWS.2, etc/NEWS.3, etc/NEWS.4, etc/NEWS.5, etc/NEWS.6, etc/NEWS.7: Make Markdown files. diff -r 0e553bb97d31 -r fa4c560d1b92 Makefile.am --- a/Makefile.am Wed Dec 08 14:08:28 2021 +0900 +++ b/Makefile.am Wed Dec 08 14:48:43 2021 +0900 @@ -391,7 +391,7 @@ .gdbinit: etc/gdbinit $(AM_V_GEN)$(gdbinit-install-rule) -NEWS: etc/NEWS.7 +NEWS: etc/NEWS.$(OCTAVE_MAJOR_VERSION).md $(AM_V_GEN)cp $< $@ .PHONY: NEWS diff -r 0e553bb97d31 -r fa4c560d1b92 etc/CHECKLIST --- a/etc/CHECKLIST Wed Dec 08 14:08:28 2021 +0900 +++ /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 0e553bb97d31 -r fa4c560d1b92 etc/CHECKLIST.md --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/CHECKLIST.md Wed Dec 08 14:48:43 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 0e553bb97d31 -r fa4c560d1b92 etc/NEWS.1 --- a/etc/NEWS.1 Wed Dec 08 14:08:28 2021 +0900 +++ /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 0e553bb97d31 -r fa4c560d1b92 etc/NEWS.1.md --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/NEWS.1.md Wed Dec 08 14:48:43 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 0e553bb97d31 -r fa4c560d1b92 etc/NEWS.2 --- a/etc/NEWS.2 Wed Dec 08 14:08:28 2021 +0900 +++ /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 0e553bb97d31 -r fa4c560d1b92 etc/NEWS.2.md --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/NEWS.2.md Wed Dec 08 14:48:43 2021 +0900 @@ -0,0 +1,1034 @@ +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. diff -r 0e553bb97d31 -r fa4c560d1b92 etc/NEWS.3 --- a/etc/NEWS.3 Wed Dec 08 14:08:28 2021 +0900 +++ /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 0e553bb97d31 -r fa4c560d1b92 etc/NEWS.3.md --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/NEWS.3.md Wed Dec 08 14:48:43 2021 +0900 @@ -0,0 +1,1717 @@ +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. diff -r 0e553bb97d31 -r fa4c560d1b92 etc/NEWS.4 --- a/etc/NEWS.4 Wed Dec 08 14:08:28 2021 +0900 +++ /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 0e553bb97d31 -r fa4c560d1b92 etc/NEWS.4.md --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/NEWS.4.md Wed Dec 08 14:48:43 2021 +0900 @@ -0,0 +1,1346 @@ +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. diff -r 0e553bb97d31 -r fa4c560d1b92 etc/NEWS.5 --- a/etc/NEWS.5 Wed Dec 08 14:08:28 2021 +0900 +++ /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 0e553bb97d31 -r fa4c560d1b92 etc/NEWS.5.md --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/NEWS.5.md Wed Dec 08 14:48:43 2021 +0900 @@ -0,0 +1,429 @@ +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` diff -r 0e553bb97d31 -r fa4c560d1b92 etc/NEWS.6 --- a/etc/NEWS.6 Wed Dec 08 14:08:28 2021 +0900 +++ /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 0e553bb97d31 -r fa4c560d1b92 etc/NEWS.6.md --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/NEWS.6.md Wed Dec 08 14:48:43 2021 +0900 @@ -0,0 +1,533 @@ +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"` diff -r 0e553bb97d31 -r fa4c560d1b92 etc/NEWS.7 --- a/etc/NEWS.7 Wed Dec 08 14:08:28 2021 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,400 +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`. diff -r 0e553bb97d31 -r fa4c560d1b92 etc/NEWS.7.md --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/NEWS.7.md Wed Dec 08 14:48:43 2021 +0900 @@ -0,0 +1,400 @@ +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`. diff -r 0e553bb97d31 -r fa4c560d1b92 etc/module.mk --- a/etc/module.mk Wed Dec 08 14:08:28 2021 +0900 +++ b/etc/module.mk Wed Dec 08 14:48:43 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%/NEWS.7 \ + %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%/PROJECTS \ %reldir%/gdbinit