# HG changeset patch
# User Kai T. Ohlhus This will probably be the last release in the 2.0.x series. There are
+a few bug fixes, but the major change is to print a message saying
+that Octave 2.0.x cannot be compiled with gcc 3.0.x or gcc 2.96. If
+you want to build Octave 2.0.x, you will need to use gcc 2.95.x. If
+you want to use gcc 3.0.x or some later version, you should be using
+the Octave 2.1.35 sources or a more recent version. This is primarily a bug-fixing release. This is primarily a bug-fixing release. This is a bug-fixing release. There are no new user-visible features. This is a bug-fixing release, but there is one new user-visible
+feature: This is a bug-fixing release. There are only a few new user-visible
+features. This is a bug-fixing release. There are no new user-visible features. This is primarily a bug-fixing release. There are only a few new
+user-visilbe features. Other than bug fixes, there were no user-visible changes in version
+2.0.1.
+
+ 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. 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.
+ These functions return new strings.
+ The `clock' and `date' functions are now implemented in M-files
+ using these basic functions.
+ This also affects patch objects used in the bar, countour, 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.
+ 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,
+
+ For example, instead of writing
+
+ You may also enable or disable all warnings, or turn them into
+ errors:
+
+ A partial list and description of warning identifiers is available
+ using
+ Octave is free software under the GNU General Public License.
+ News for Octave Version 1
+
+
+Summary of changes for version 1.1.1
+
+
+ * 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
+
+
+ * 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 =
+
+
+
+Summary of changes for version 1.0
+
+
+ * C-style I/O functions now handle files referenced by name or by
+ number more consistently.
+
+
+Summary of changes for version 0.83
+
+
+ * Loading global symbols should work now.
+
+ * Clearing the screen doesn't reprint the prompt unnecessarily.
+
+ * The operations
+
+Summary of changes for version 0.82
+
+
+ * 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
+
+
+ * 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
+
+
+ * 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
+ bug-octave@bevo.che.wisc.edu.
+
+ * 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
+
+Summary of changes for version 0.79
+
+
+ * 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
+
+
+ * 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
+
+
+ * Improved help. The command `help -i topic' now uses the GNU Info
+ browser to display help for the given topic directly from the
+ Texinfo documenation.
+
+ * New function: chol -- Cholesky factorization.
+
+
+Summary of changes for version 0.76
+
+
+ * 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@bevo.che.wisc.edu.
+
+ * 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
+
+
+ * 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
+
+
+ * 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
+
+
+ * 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
+
+
+ * 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
+
+
+ * 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 diagnositic 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
+
+
+ * 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
+
+
+ * 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
+
+
+ * 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
+
+
+ * 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 elememnts 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 andy 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
+
+
+ * 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
+
+
+ * 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
+
+
+ * 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 organazations who have supported
+ the development of Octave.
+
+ NEWS -- This file, listing recent changes.
+
+ * Help is now available at the gnuplot prompt.
+
+
+
+
diff -r 7609e2a6faef -r e8fc61e077fc NEWS-2.html
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/NEWS-2.html Tue Nov 01 01:06:10 2016 +0100
@@ -0,0 +1,1274 @@
+
+
+
+ News for Octave Version 2
+
+
+Summary of changes for version 2.0.17
+
+Summary of changes for version 2.0.16
+
+Summary of changes for version 2.0.15
+
+
+
+
+
+ ;; 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))))))
+
Summary of changes for version 2.0.14
+
+This release fixes numerous bugs and adds the following new features:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Summary of changes for version 2.0.13
+
+Summary of changes for version 2.0.12
+
+
+
+
+Summary of changes for version 2.0.11
+
+
+
+
+Summary of changes for version 2.0.10
+
+
+
+
+
+ A*X + X*A' + C = 0
+
+ instead of
+
+ A'*X + X*A + C = 0
+
+ To try to avoid confusion for people who are used to the way
+ Octave behaved in previous versions, a warning is printed the
+ first time lyap is called in a given session. To completely
+ disable the warning, simply add
+
+ global __disable_lyap_interface_change_warning__;
+
+ to your ~/.octaverc file. The warning will eventually disappear
+ for good in some future version of Octave.
+ 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.Summary of changes for version 2.0.9
+
+
+
+
+
+ plot (x, y, "-*;sin(x);")
+
+ plots y vs. x using the linespoints style and sets the title of
+ the line in the key to be `sin(x)'Summary of changes for version 2.0.8
+
+
+
+
+Summary of changes for version 2.0.7
+
+Summary of changes for version 2.0.6
+
+
+
+
+Summary of changes for version 2.0.5
+
+
+
+
+Summary of changes for version 2.0.4
+
+
+
+
+Summary of changes for version 2.0.3
+
+
+
+
+
+ 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).Summary of changes for version 2.0.2
+
+
+
+
+
+
+
Summary of changes for version 2.0.1
+
+Summary of changes for version 2.0
+
+
+
+
+
+
diff -r 7609e2a6faef -r e8fc61e077fc NEWS-3.2.html
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/NEWS-3.2.html Tue Nov 01 01:06:10 2016 +0100
@@ -0,0 +1,398 @@
+
+ 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.
+ 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.
+
+
+ dassl_reltol = dassl_options ("relative tolerance");
+
+ 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"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Summary of important user-visible changes for version 3.2:
+---------------------------------------------------------
+
+ ** 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_backends ezmeshc intwarning surfl
+ backend 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 backend is disabled by
+ default. You can switch to using it with the command
+
+ backend ("fltk")
+
+ for all future figures or for a particular figure with the command
+
+ backend (h, "fltk")
+
+ where "h" is a valid figure handle. Please note that this backend
+ does not yet support text objects. Obviously, this is a necessary
+ feature before it can be considered usable. We are looking for
+ volunteers to help implement this missing feature.
+
+ ** 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.
+
+ ** 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. sortrows now uses a more efficient algorithm, especially
+ in the homegeneous case. lookup 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 in 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 in 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
+
+See NEWS.3 for old news.
+
diff -r 7609e2a6faef -r e8fc61e077fc NEWS-3.4.html
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/NEWS-3.4.html Tue Nov 01 01:06:10 2016 +0100
@@ -0,0 +1,485 @@
+
+Summary of important user-visible changes for version 3.4.3:
+-----------------------------------------------------------
+
+ ** Octave 3.4.3 is a bug fixing release.
+
+Summary of important user-visible changes for version 3.4.2:
+-----------------------------------------------------------
+
+ ** Octave 3.2.4 fixes some minor installation problems that affected
+ version 3.4.1.
+
+Summary of important user-visible changes for version 3.4.1:
+-----------------------------------------------------------
+
+ ** 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:
+---------------------------------------------------------
+
+ ** 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 `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 expresssion.
+
+ ** 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 wrapping the
+ operands in real().
+
+ ** 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.
+
+ ** 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.
+
+ ** 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 krylovb values
+ autocov dispatch glpkmex replot
+ betai fstat is_global saveimage
+
+ * For compatibility with Matlab, mu2lin (x) is now equivalent to
+ mu2lin (x, 0).
+
+ * The ARPACK library is now distributed with Octave so it no longer
+ needs to be available as an external dependency when building
+ Octave.
+
diff -r 7609e2a6faef -r e8fc61e077fc NEWS-3.6.html
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/NEWS-3.6.html Tue Nov 01 01:06:10 2016 +0100
@@ -0,0 +1,213 @@
+
+Summary of important user-visible changes for version 3.6:
+---------------------------------------------------------
+
+ ** 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 is_duplicate_entry
+ cor polyderiv
+ corrcoef shell_cmd
+ __error_text__ studentize
+ error_text sylvester_matrix
+
diff -r 7609e2a6faef -r e8fc61e077fc NEWS-3.8.html
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/NEWS-3.8.html Tue Nov 01 01:06:10 2016 +0100
@@ -0,0 +1,400 @@
+
+Summary of important user-visible changes for version 3.8:
+---------------------------------------------------------
+
+ ** 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 Octave_map 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 octave_map
+ (struct array) or octave_scalar_map for a single structure.
+
diff -r 7609e2a6faef -r e8fc61e077fc NEWS-3.html
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/NEWS-3.html Tue Nov 01 01:06:10 2016 +0100
@@ -0,0 +1,222 @@
+
+
+
+News for Octave Version 3
+
+
+
+
diff -r 7609e2a6faef -r e8fc61e077fc NEWS-4.0.html
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/NEWS-4.0.html Tue Nov 01 01:06:10 2016 +0100
@@ -0,0 +1,339 @@
+
+
+ line (x, y, "linewidth", 4, "color", [1, 0, 0.5]);
+
+ (this also shows the color feature).
+ __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.).
+
+
+ addpath (genpath ("~/octave"));
+
+ will add ~/octave and all directories below it to the head of the
+ path.
+ 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.
+
+ 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).
+
+ help warning_ids
+
+ 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
+
+ [output, status] = system (cmd);
+
+ to
+
+ [status, output] = system (cmd);
+
+ [x, info, msg] = fsolve (...);
+
+ to
+
+ [x, fval, info] = fsolve (...);
+
+Summary of important user-visible changes for version 4.0:
+---------------------------------------------------------
+
+ ** 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 behaviour of "ismatrix" is obtained by
+ "isnumeric (x) || islogical (x) || ischar (x)".
+
+ ** The nextpow2 function behaviour 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
+ 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.
+
+ ** The configure option --enable-octave-allocator has been removed.
+ The internal class octave_allocator declared in oct-alloc.h has
+ been removed. The header remains, but is deprecated. The macros to
+ access the class (DECLARE_OCTAVE_ALLOCATOR, DEFINE_OCTAVE_ALLOCATOR,
+ and DEFINE_OCTAVE_ALLOCATOR2) are now unconditionally defined to be
+ empty.
+
+ ** 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 7609e2a6faef -r e8fc61e077fc README.md
--- a/README.md Tue Nov 01 00:28:55 2016 +0100
+++ b/README.md Tue Nov 01 01:06:10 2016 +0100
@@ -1,26 +1,174 @@
# octave-web
-Proposed update of [octave.org](http://www.octave.org).
+
+This is the [http://www.octave.org][1] website development repository.
+
+The development and deployment workflow in short:
+
+1. The website is developed in this [web-octave][2] Mercurial repository.
+2. Static HTML pages are generated from this [web-octave][2] repository
+ and are deployed at the [Savannah CVS][3] repository.
+3. After deploying the static pages, they are visible from
+ [http://www.octave.org][1], that redirects to
+ [https://www.gnu.org/software/octave][4].
+
+[1]: http://www.octave.org
+[2]: http://hg.octave.org/web-octave
+[3]: http://web.cvs.savannah.gnu.org/viewvc/octave/?root=octave
+[4]: https://www.gnu.org/software/octave
+
+
+
+## Development
+
+### What makes this way of development better, than the prior?
+
+- **Official RSS feeds** are **easily** maintained now **at a single place**:
+ the `_posts` subdirectory, later accessible via
+ `https://www.gnu.org/software/octave/feed.xml` and automatically spread
+ to an arbitrary amount of readers, including almost all below mentioned.
+
+ The Octave News are currently very widespread
+ (and **individually maintained!**) at:
+ - https://www.gnu.org/software/octave/ (excerpt for the start page)
+ - https://www.gnu.org/software/octave/news.html (some archive)
+ - https://www.gnu.org/software/octave/community-news.html (excerpt for the
+ Octave GUI)
+ - https://www.gnu.org/software/octave/fixes-4.0.x.html (here are many more
+ to come!)
+ - http://wiki.octave.org/GNU_Octave_Wiki#News (some excerpt, anyone can edit)
+
+- **Content is content**: Page content is primary written in [Markdown][5],
+ a lightweight Markup language, thus no nasty forgotten HTML tags, that
+ make content look ugly for any author of a HTML page.
+ [Jekyll][6] makes valid HTML from [Markdown][5] content.
+
+- **Easy maintenance**: Just a single command (see below), and [Jekyll][6]
+ builds a consistent, up-to-date static page. The only maintenance burden,
+ as it is today anyway: The [Savannah CVS][3] repository.
+
+[5]: https://daringfireball.net/projects/markdown/syntax
+[6]: https://jekyllrb.com/
+
+
+
+### Getting the sources
+
+Anyone is free to clone this development repository, simply type
+
+ hg clone http://hg.octave.org/web-octave
-## Developing
-- Install Jekyll from Rubygems
-
- `gem install jekyll`
-
-- Compile the assets into `_site` (this directory is ignored by revision control and will be created on first build)
-
- `jekyll build`
-
-- Serve the site
+to get anonymous read access without writing privileges.
+To push your changes, please contact the octave developers at
+`maintainers@octave.org`.
+
+If you already have writing permissions for this repository,
+you should clone the repository using
+
+ hg clone ssh://gnuoctave@octave.org/hg/web-octave
+
+
+
+### Building requisites
+
+To build the static website, you need to install [Jekyll][6] and a few more
+tools from [Rubygems][7]. Just type
+
+ gem install jekyll jekyll-octicons pygments.rb
+
+[7]: https://rubygems.org/
+
+
+
+### Building the static website
+
+All relevant information for Jekyll to build the static website is located
+in the file `_config.yml`.
+Typing
+
+ jekyll build
- `jekyll serve --watch`
-
-## Configuring
-See [_config.yml](_config.yml). In particular, `baseurl` will need to be adjusted to match the path of the subdirectory where the site will be hosted, e.g., for `gnu.org/octave` use `/octave`. Currently `baseurl` is set to the repository name in order to work with the Github Pages' build service.
+from the repositories root directory will build a complete static website
+into the subdirectory `_site` using this information (this directory is
+ignored by Mercurial and will be created on first build).
+
+Especially for development, it is beneficial to watch the changes locally
+before pushing any changes.
+Jekyll provides a local webserver by typing
+
+ jekyll serve
+
+and rebuilds the whole static website automatically, as it monitors any
+file changes.
+
+To build the test page, that can be deployed at some subdirectory, e.g.
+`http://www.octave.org/new`, use
+
+ jekyll build --config _config.yml,_config_test.yml
+
+
+
+### Typical development tasks
+
+- **Add a new RSS post**
+
+ Duplicate another post in the subdirectory `_posts` and
+ adjust the filename, especially the date
+
+
+
+
## Deploying
-- Configure paths as needed in `_config.yml`
-- Build the static site
-
- `jekyll build`
+
+After building the static website from [web-octave][2] into the
+the subdirectory `_site` using Jekyll it can be deployed at the
+[Savannah CVS][3] repository to become visible to the world.
+
+Therefore, checkout the [Savannah CVS][3] repository somewhere
+outside the [web-octave][2] directory, typing
+
+ export CVS_RSH=ssh
+ cvs -z3 -d:ext:
-
\ No newline at end of file
+
diff -r 7609e2a6faef -r e8fc61e077fc _layouts/community-news.html
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/_layouts/community-news.html Tue Nov 01 01:06:10 2016 +0100
@@ -0,0 +1,30 @@
+
+
+
+
+
+
-
-
+
+
{{ site.title }}
@@ -19,7 +19,7 @@
{% for page in site.pages %}
{% if page.menu %}
LOADPATH
variable, you can use the
+ addpath
, rmpath
, and path
+ functions.
+ [See this post.](http://lists.gnu.org/archive/html/octave-maintainers/2006-05/msg00122.html)
+
+
+- May 3, 2006
+
+ To enable XML reading, mat2cell was developed along
+ with significantly more efficient versions of regexp and regexprep.
+ [See this post.](http://lists.gnu.org/archive/html/octave-maintainers/2006-05/msg00033.html)
+
+
+- May 2, 2006
+
+ All warn_* built-in variables were removed and replaced by warning
+ identifiers that may be used with the warning function. For example,
+ warn_divide_by_zero = false;
would now be
+ warning ("off", "Octave:divide-by-zero");
.
+ [See this post.](http://lists.gnu.org/archive/html/octave-maintainers/2006-05/msg00019.html)
+
+
+- March 23, 2006
+
+ Versions 2.1.73 and 2.9.5 are now available for ftp.
+
+
+- November 11, 2005
+
+ Versions 2.1.72 and 2.9.4 are now available for ftp.
+
+
+- May 18, 2005
+
+ Version 2.9.3 is now available for ftp.
+
+
+- May 5, 2005
+
+ Version 2.1.70 is now available for ftp.
+
+
+- April 22, 2005
+
+ Version 2.9.2 is now available for ftp.
+
+
+- March 29, 2005
+
+ Version 2.1.69 is now available for ftp.
+
+
+- March 27, 2005
+
+ Version 2.1.68 is now available for ftp.
+ Version 2.9.1 is now available for ftp.
+
+
+- March 15, 2005
+
+ Version 2.9.0 is now available for ftp. This snapshot is the first
+ in the series leading to Octave 3.0.
+
+
+- March 4, 2005
+
+ Version 2.1.67 is now available for ftp.
+
+
+- February 24, 2005
+
+ Version 2.1.66 is now available for ftp.
+
+
+- February 18, 2005
+
+ Version 2.1.65 is now available for ftp.
+
+
+- December 3, 2004
+
+ Version 2.1.64 is now available for ftp.
+
+
+- November 17, 2004
+
+ Version 2.1.63 is now available for ftp. The CVS archive has been
+ split to allow work to proceed toward Octave 3.0 while also
+ stabilizing a 2.1.x version.
diff -r 7609e2a6faef -r e8fc61e077fc _posts/2013-01-28-oct-conf-milano.markdown
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/_posts/2013-01-28-oct-conf-milano.markdown Tue Nov 01 01:06:10 2016 +0100
@@ -0,0 +1,14 @@
+---
+layout: post
+title: "OctConf 2013"
+date: 2013-01-28
+categories: news
+---
+
+[OctConf 2013][1] will take place in Milano, Italy during June 24-26, 2013.
+All Octave users, developers, and enthusiasts are welcome to attend!
+
+Registrations for OctConf 2013 are [now open][2]!
+
+[1]: http://wiki.octave.org/OctConf_2013
+[2]: http://www2.mate.polimi.it/ocs/?cf=42
diff -r 7609e2a6faef -r e8fc61e077fc _posts/2013-02-21-octave-3.6.4-released.markdown
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/_posts/2013-02-21-octave-3.6.4-released.markdown Tue Nov 01 01:06:10 2016 +0100
@@ -0,0 +1,13 @@
+---
+layout: post
+title: "GNU Octave 3.6.4 Released"
+date: 2013-02-21
+categories: news
+---
+
+Version 3.6.4 has been released and is now available for [download][1].
+Octave 3.6.4 is a minor bug-fixing release.
+See the [NEWS][2] file for a list of user-visible changes since 3.4.
+
+[1]: {{ "download.html" | absolute_url }}
+[2]: {{ "NEWS-3.6.html" | absolute_url }}
diff -r 7609e2a6faef -r e8fc61e077fc _posts/2013-12-31-octave-3.8.0-released.markdown
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/_posts/2013-12-31-octave-3.8.0-released.markdown Tue Nov 01 01:06:10 2016 +0100
@@ -0,0 +1,13 @@
+---
+layout: post
+title: "GNU Octave 3.8.0 Released"
+date: 2013-12-31
+categories: news
+---
+
+Version 3.8.0 has been released and is now available for [download][1].
+Octave 3.8.0 is a major new release.
+See the [NEWS][2] file for a list of user-visible changes.
+
+[1]: {{ "download.html" | absolute_url }}
+[2]: {{ "NEWS-3.8.html" | absolute_url }}
diff -r 7609e2a6faef -r e8fc61e077fc _posts/2014-03-07-google-summer-of-code.markdown
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/_posts/2014-03-07-google-summer-of-code.markdown Tue Nov 01 01:06:10 2016 +0100
@@ -0,0 +1,21 @@
+---
+layout: post
+title: "Google Summer of Code"
+date: 2014-02-26
+categories: news
+---
+
+Octave was selected as a [mentoring organization][1] for the
+[Google Summer of Code][2] program for 2014.
+We have participated in the past as part of the [GNU Project][3]
+but this is the first year that we have been a mentoring organization.
+
+Interested students who meet the [requirements][4] listed on the GSoC
+web site are encouraged to apply (see the Students and Eligibility section).
+Please also note the [guidelines for Octave][5].
+
+[1]: http://www.google-melange.com/gsoc/org2/google/gsoc2014/octave
+[2]: http://www.google-melange.com/gsoc/homepage/google/gsoc2014
+[3]: https://www.gnu.org/
+[4]: http://www.google-melange.com/gsoc/document/show/gsoc_program/google/gsoc2014/help_page
+[5]: http://wiki.octave.org/GSoC_Project_Ideas#Steps_Toward_a_Successful_Application
diff -r 7609e2a6faef -r e8fc61e077fc _posts/2014-03-07-octave-3.8.1-released.markdown
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/_posts/2014-03-07-octave-3.8.1-released.markdown Tue Nov 01 01:06:10 2016 +0100
@@ -0,0 +1,13 @@
+---
+layout: post
+title: "GNU Octave 3.8.1 Released"
+date: 2014-03-04
+categories: news
+---
+
+Version 3.8.1 has been released and is now available for [download][1].
+Octave 3.8.1 is a major new release.
+See the [NEWS][2] file for a list of user-visible changes.
+
+[1]: {{ "download.html" | absolute_url }}
+[2]: {{ "NEWS-3.8.html" | absolute_url }}
diff -r 7609e2a6faef -r e8fc61e077fc _posts/2014-09-22-oct-conf-montreal.markdown
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/_posts/2014-09-22-oct-conf-montreal.markdown Tue Nov 01 01:06:10 2016 +0100
@@ -0,0 +1,11 @@
+---
+layout: post
+title: "OctConf 2014"
+date: 2014-09-22
+categories: news
+---
+
+The presentation slides are available at
+[http://wiki.octave.org/OctConf_2014](http://wiki.octave.org/OctConf_2014).
+
+![OctConf 2015]({{ "/img/octconf-2014.png" | absolute_url}})
diff -r 7609e2a6faef -r e8fc61e077fc _posts/2015-05-29-octave-4.0.0-released.markdown
--- a/_posts/2015-05-29-octave-4.0.0-released.markdown Tue Nov 01 00:28:55 2016 +0100
+++ b/_posts/2015-05-29-octave-4.0.0-released.markdown Tue Nov 01 01:06:10 2016 +0100
@@ -2,24 +2,25 @@
layout: post
title: "GNU Octave 4.0.0 Released"
date: 2015-05-29
-categories: releases
+categories: news
---
-Version 4.0.0 has been released and is now available for download.
-Octave 4.0 is a major new release with many new features:
+Octave version 4.0.0 has been released and is now available for [download][1].
+Some of the many new features of this major release are:
- including a graphical user interface,
- support for classdef object-oriented programming,
- better compatibility with Matlab, and
- many new and improved functions.
-An official [Windows binary installer][] is available.
+An official [Windows binary installer][2] is available.
-A list of important user-visible changes is available [here][news],
-by selecting the Release Notes item in the News menu of the GUI,
-or by typing `news` at the Octave command prompt.
+A list of important user-visible changes is available by selecting the
+[Release Notes][3] item in the News menu of the GUI or by typing `news`
+at the Octave command prompt.
Thanks to the many people who contributed to this release!
-[news]: http://octave.org/NEWS-4.0.html
-[Windows binary installer]: ftp://ftp.gnu.org/gnu/octave/windows/octave-4.0.0_0-installer.exe
+[1]: {{ "download.html" | absolute_url }}
+[2]: ftp://ftp.gnu.org/gnu/octave/windows/octave-4.0.0_0-installer.exe
+[3]: {{ "NEWS-4.0.html" | absolute_url }}
diff -r 7609e2a6faef -r e8fc61e077fc _posts/2015-09-23-oct-conf-darmstadt.markdown
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/_posts/2015-09-23-oct-conf-darmstadt.markdown Tue Nov 01 01:06:10 2016 +0100
@@ -0,0 +1,11 @@
+---
+layout: post
+title: "OctConf 2015"
+date: 2015-09-23
+categories: news
+---
+
+The presentation slides are available at
+[http://wiki.octave.org/OctConf_2015](http://wiki.octave.org/OctConf_2015).
+
+![OctConf 2015]({{ "/img/octconf-2015.png" | absolute_url}})
diff -r 7609e2a6faef -r e8fc61e077fc _posts/2016-03-23-octave-4.0.1-released.markdown
--- a/_posts/2016-03-23-octave-4.0.1-released.markdown Tue Nov 01 00:28:55 2016 +0100
+++ b/_posts/2016-03-23-octave-4.0.1-released.markdown Tue Nov 01 01:06:10 2016 +0100
@@ -2,11 +2,10 @@
layout: post
title: "GNU Octave 4.0.1 Released"
date: 2016-03-23
-categories: releases
+categories: news
---
-Version 4.0.1 has been released and is now available for [download][].
-Octave 4.0.1 is a [bug fixing release][].
+Octave version 4.0.1 has been released and is now available for [download][1].
Octave 4.0, released in May 2015,
was a major new version with many new features,
@@ -15,5 +14,150 @@
better compatibility with Matlab,
and many new and improved functions.
-[download]: http://www.octave.org/download.html
-[bug fixing release]: http://www.octave.org/fixes-4-0-1.html
+This is a bug fixing release:
+
+- Allow strsplit to use '+' as a delimiter ([bug #47403](https://savannah.gnu.org/bugs/?47403)).
+- svds.m: Special handling for case of sigma=0 ([bug #46683](https://savannah.gnu.org/bugs/?46683)).
+- patch.m: Fix typo in docstring.
+- Fix splines and remove unnecessary calculations ([bug #47013](https://savannah.gnu.org/bugs/?47013))
+- doc: Use consistent spacing for memory/storage sizes
+- fix printf regression ([bug #47192](https://savannah.gnu.org/bugs/?47192))
+- Invoke correct version of octave-cli from main driver program
+- For gnuplot 5.x, add the "color" option to the postscript terminal.
+- Avoid overflow while reshaping large sparse matrices ([bug #42850](https://savannah.gnu.org/bugs/?42850)).
+- Fix memory corruption allocating to sparse arrays ([bug #42825](https://savannah.gnu.org/bugs/?42825)).
+- `__osmesa_print__.cc`: Include system headers with
+
+
+