# HG changeset patch # User Kai T. Ohlhus # Date 1476373284 -7200 # Node ID 373d2dba318ed81a085828a13f70f34a59275deb # Parent a7952259f5d311b46d9372b728aee6f5bede07b1 Include stuff from current octave.org for later hosting. diff -r a7952259f5d3 -r 373d2dba318e .htaccess --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.htaccess Thu Oct 13 17:41:24 2016 +0200 @@ -0,0 +1,25 @@ + + Order allow,deny + Deny from all + + + + Order allow,deny + Deny from all + + + + Order allow,deny + Deny from all + + +RewriteEngine on + +RewriteBase /software/octave/ + +RewriteRule ^octave.pdf doc/octave-4.0.3.pdf [L] +RewriteRule ^NEWS.html NEWS-4.0.html [L] +RewriteRule ^contribute.html get-involved.html [L] + +RewriteRule ^doc/interpreter$ doc/interpreter/ [R,L] +RewriteRule ^doc/interpreter/(.*) doc/v4.0.3/$1 [L] diff -r a7952259f5d3 -r 373d2dba318e NEWS-1.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/NEWS-1.html Thu Oct 13 17:41:24 2016 +0200 @@ -0,0 +1,1644 @@ + + + + Changes in Octave version 1 + + + +

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 =
+
+      
+
+      octave:5> x.a
+      x.a = 1
+      octave:6> x.b
+      x.b =
+
+        1  2
+        3  4
+
+      octave:7> x.c
+      x.c = string
+      octave:8> x.b.d = 3
+      x.b.d = 3
+      octave:9> x.b
+      x.b =
+
+      
+
+      octave:10> x.b.d
+      x.b.d = 3
+
+    Functions can return structures:
+
+      octave:1> a = rand (3) + rand (3) * I;
+      octave:2> function y = f (x)
+      > y.re = real (x);
+      > y.im = imag (x);
+      > endfunction
+      octave:3> f (a)
+      ans =
+
+      
+
+      octave:4> ans.im
+      ans.im =
+
+        0.093411  0.229690  0.627585
+        0.415128  0.221706  0.850341
+        0.894990  0.343265  0.384018
+
+      octave:5> ans.re
+      ans.re =
+
+        0.56234  0.14797  0.26416
+        0.72120  0.62691  0.20910
+        0.89211  0.25175  0.21081
+
+    Return lists can include structure elements:
+
+      octave:1> [x.u, x.s, x.v] = svd ([1, 2; 3, 4])
+      x.u =
+
+        -0.40455  -0.91451
+        -0.91451   0.40455
+
+      x.s =
+
+        5.46499  0.00000
+        0.00000  0.36597
+
+      x.v =
+
+        -0.57605   0.81742
+        -0.81742  -0.57605
+
+      octave:8> x
+      x =
+
+      
+
+    This feature should be considered experimental, but it seems to
+    work ok.  Suggestions for ways to improve it are welcome.
+
+  * Octave now supports a limited form of exception handling modelled
+    after the unwind-protect form of Lisp:
+
+      unwind_protect
+        BODY
+      unwind_protect_cleanup
+        CLEANUP
+      end_unwind_protect
+
+    Where BODY and CLEANUP are both optional and may contain any
+    Octave expressions or commands.  The statements in CLEANUP are
+    guaranteed to be executed regardless of how control exits BODY.
+
+    This is useful to protect temporary changes to global variables
+    from possible errors.  For example, the following code will always
+    restore the original value of the built-in variable
+    do_fortran_indexing even if an error occurs while performing the
+    indexing operation.
+
+      save_do_fortran_indexing = do_fortran_indexing;
+      unwind_protect
+        do_fortran_indexing = "true";
+        elt = a (idx)
+      unwind_protect_cleanup
+        do_fortran_indexing = save_do_fortran_indexing;
+      end_unwind_protect
+
+    Without unwind_protect, the value of do_fortran_indexing would not
+    be restored if an error occurs while performing the indexing
+    operation because evaluation would stop at the point of the error
+    and the statement to restore the value would not be executed.
+
+  * Recursive directory searching has been implemented using Karl
+    Berry's kpathsea library.  Directories below path elements that
+    end in // are searched recursively for .m files.
+
+  * Octave now waits for additional input when a pair of parentheses
+    is `open' instead of giving an error.  This allows one to write
+    statements like this
+
+      if (big_long_variable_name == other_long_variable_name
+          || not_so_short_variable_name > 4
+          && y > x)
+        some (code, here);
+
+    without having to clutter up the if statement with continuation
+    characters.
+
+  * Continuation lines are now allowed in string constants and are
+    handled correctly inside matrix constants.
+
+  * Both `...{whitespace}\n' and `\{whitespace}\n' can be used to
+    introduce continuation lines, where {whitespace} may include
+    spaces, tabs and comemnts.
+
+  * The script directory has been split up by topic.
+
+  * Dynamic linking mostly works with dld.  The following limitations
+    are known problems:
+
+    -- Clearing dynamically linked functions doesn't work.
+
+    -- Dynamic linking only works with dld, which has not been ported
+       to very many systems yet.
+
+    -- Configuring with --enable-lite-kernel seems to mostly work to
+       make nonessential built-in functions dynamically loaded, but
+       there also seem to be some problems.  For example, fsolve seems
+       to always return info == 3.  This is difficult to debug since
+       gdb won't seem to allow breakpoints to be set inside
+       dynamically loaded functions.
+
+    -- Octave uses a lot of memory if the dynamically linked functions
+       are compiled with -g.  This appears to be a limitation with
+       dld, and can be avoided by not using -g to compile functions
+       that will be linked dynamically.
+
+  * fft2 and ifft2 are now built-in functions.
+
+  * The `&&' and `||' logical operators are now evaluated in a
+    short-circuit fashion and work differently than the element by
+    element operators `&' and `|'.  See the Octave manual for more
+    details.
+
+  * Expressions like 1./m are now parsed as 1 ./ m, not 1. / m.
+
+  * The replot command now takes the same arguments as gplot or
+    gsplot (except ranges, which cannot be respecified with replot
+    (yet)) so you can add additional lines to existing plots.
+
+  * The hold command has been implemented.
+
+  * New function `clearplot' clears the plot window.  The name `clg'
+    is aliased to `clearplot' for compatibility with Matlab.
+
+  * The commands `gplot clear' and `gsplot clear' are equivalent to
+    `clearplot'.  (Previously, `gplot clear' would evaluate `clear' as
+    an ordinary expression and clear all the visible variables.)
+
+  * The Matlab-style plotting commands have been improved.  They now
+    accept line-style arguments, multiple x-y pairs, and other plot
+    option flags.  For example,
+ 
+      plot (x, y, "@12", x, y2, x, y3, "4", x, y4, "+")
+
+    results in a plot with
+
+      y  plotted with points of type 2 ("+") and color 1 (red).
+      y2 plotted with lines.
+      y3 plotted with lines of color 4.
+      y4 plotted with points which are "+"s.
+
+    the help message for `plot' and `plot_opt' provide full
+    descriptions of the options.
+
+  * NaN is now dropped from plot data, and Inf is converted to a
+    very large value before calling gnuplot.
+
+  * Improved load and save commands:
+
+    -- The save and load commands can now read and write a new binary
+       file format.  Conversion to and from IEEE big and little endian
+       formats is handled automatically.  Conversion for other formats
+       has not yet been implemented.
+
+    -- The load command can now read Matlab .mat files, though it is
+       not yet able to read sparse matrices or handle conversion for
+       all data formats.
+
+    -- The save command can write Matlab .mat files.
+
+    -- The load command automatically determines the save format
+       (binary, ascii, or Matlab binary).
+
+    -- The default format for the save command is taken from the
+       built-in variable `default_save_format'.
+
+    -- The save and load commands now both accept a list of globbing
+       patterns so you can easily load a list of variables from a
+       file.
+
+    -- The load command now accepts the option -list, for listing the
+       variable names without actually loading the data.  With
+       -verbose, it prints a long listing.
+
+    -- The load command now accepts the option -float-binary, for
+       saving floating point data in binary files in single precision.
+
+  * who and whos now accept a list of globbing patterns so you can
+    limit the lists of variables and functions to those that match a
+    given set of patterns.
+
+  * New functions for manipulating polynomials
+      
+      compan     -- companion matrix corresponding to polynomial coefficients
+      conv       -- convolve two vectors
+      deconv     -- deconvolve two vectors
+      roots      -- find the roots of a polynomial
+      poly       -- characteristic polynomial of a matrix
+      polyderiv  -- differentiate a polynomial
+      polyinteg  -- integrate a polynomial
+      polyreduce -- reduce a polynomial to minimum number of terms
+      polyval    -- evaluate a polynomial at a point
+      polyvalm   -- evaluate a polynomial in the matrix sense
+      residue    -- partial fraction expansion corresponding to the ratio
+                    of two polynomials
+
+  * New functions for manipulating sets
+
+      create_set   -- create a set of unique values
+      complement   -- find the complement of two sets
+      intersection -- find the intersection of two sets
+      union        -- find the union of two sets
+
+  * New elementary functions:
+
+      acot   acoth   acsc   acsch
+      asec   asech   cot    coth
+      csc    csch    log2   sec
+      sech
+
+  * New special functions:
+
+      beta   -- beta function
+      betai  -- incomplete beta function
+      gammai -- incomplete gamma function
+
+  * New image processing functions:
+
+      colormap  -- set and return current colormap
+      gray      -- set a gray colormap
+      gray2ind  -- image format conversion
+      image     -- display an image
+      imagesc   -- scale and display an image
+      imshow    -- display images
+      ind2gray  -- image format conversion
+      ind2rgb   -- image format conversion
+      loadimage -- load an image from a file
+      ntsc2rgb  -- image format conversion
+      ocean     -- set a color colormap
+      rgb2ind   -- image format conversion
+      rgb2ntsc  -- image format conversion
+      saveimage -- save an image to a file
+
+  * New time and date funcitons:
+
+      tic          -- set wall-clock timer
+      toc          -- get elapsed wall-clock time, since timer last set
+      etime        -- another way to get elapsed wall-clock time
+      cputime      -- get CPU time used since Octave started
+      is_leap_year -- is the given year a leap year?
+
+  * Other new functions:
+
+      bug_report -- submit a bug report to the bug-octave mailing list
+
+      toascii -- convert a string to a matrix of ASCII character codes
+
+      octave_tmp_file -- generate a unique temporary file name
+
+      undo_string_escapes -- replace special characters in a string by
+                             their backslash forms
+
+      is_struct -- determine whether something is a structure data type
+
+      feof   -- check EOF condition for a specified file
+      ferror -- check error state for a specified file
+      fread  -- read binary data from a file
+      fwrite -- write binary data to a file
+
+      file_in_path -- check to see if named file exists in given path
+
+      kbhit  -- get a single character from the terminal
+
+      axis   -- change plot ranges
+      hist   -- plot histograms
+
+      diary  -- save commands and output to a file
+
+      type   -- show the definition of a function
+      which  -- print the type of an identifier or the location of a
+                function file
+
+      isieee  -- Returns 1 if host uses IEEE floating point
+      realmax -- Returns largest floating point number
+      realmin -- Returns smallest floating point number
+
+      gcd     -- greatest common divisor
+      lcm     -- least common multiple
+
+      null    -- orthonormal basis of the null space of a matrix
+      orth    -- orthonormal basis of the range space of a matrix
+
+      fft2    -- two-dimensional fast fourier transform
+      ifft2   -- two-dimensional inverse fast fourier transform
+      filter  -- digital filter
+      fftfilt -- filter using fft
+      fftconv -- convolve to vectors using fft
+      sinc    -- returns sin(pi*x)/(pi*x)
+      freqz   -- compute the frequency response of a filter
+
+  * The meaning of nargin (== args.length ()) in built-in functions
+    has been changed to match the meaning of nargin in user-defined
+    functions.
+
+  * Variable return lists.  Octave now has a real mechanism for
+    handling functions that return an unspecified number of values,
+    so it is no longer necessary to place an upper bound on the number
+    of outputs that a function can produce.
+
+    Here is an example of a function that uses the new syntax to
+    produce n values:
+
+      function [...] = foo (n)
+        for i = 1:n
+          vr_val (i * x);
+        endfor
+      endfunction
+
+  * New keyword, all_va_args, that allows the entire list of va_args
+    to be passed to another function.  For example, given the functions
+
+      function f (...)
+        while (nargin--)
+          disp (va_arg ())
+        endwhile
+      endfunction
+      function g (...)
+        f ("begin", all_va_args, "end")
+      endfunction
+
+    the statement
+
+      g (1, 2, 3)
+
+    prints
+
+      begin
+      1
+      2
+      3
+      end
+
+    all_va_args may be used more than once, but can only be used
+    within functions that take a variable number of arguments.
+
+  * If given a second argument, svd now returns an economy-sized
+    decomposition, eliminating the unecessary rows or columns of U or
+    V.
+
+  * The max and min functions correctly handle complex matrices in
+    which some columns contain real values only.
+
+  * The find function now handles 2 and 3 output arguments.
+
+  * The qr function now allows computation of QR with pivoting.
+
+  * hilb() is much faster for large matrices.
+
+  * computer() is now a built-in function.
+
+  * pinv() is now a built-in function.
+
+  * The output from the history command now goes through the pager.
+
+  * If a function is called without assigning the result, nargout is
+    now correctly set to 0.
+
+  * It is now possible to write functions that only set some return
+    values.  For example, calling the function
+
+      function [x, y, z] = f () x = 1; z = 2; endfunction
+
+    as
+
+      [a, b, c] = f ()
+
+    produces:
+
+      a = 1
+
+      b = [](0x0)
+
+      c = 2
+
+  * The shell_cmd function has been renamed to system (the name
+    shell_cmd remains for compatibility).  It now returns [output, status].
+
+  * New built-in variable `OCTAVE_VERSION'.  Also a new function,
+    version, for compatibility with Matlab.
+
+  * New built-in variable `automatic_replot'.  If it is "true", Octave
+    will automatically send a replot command to gnuplot each time the
+    plot changes.  Since this is fairly inefficient, the default value
+    is "false".
+
+  * New built-in variable `whitespace_in_literal_matrix' allows some
+    control over how Octave decides to convert spaces to commas in
+    matrix expressions like `[m (1)]'.
+
+    If the value of `whitespace_in_literal_matrix' is "ignore", Octave
+    will never insert a comma or a semicolon in a literal matrix list.
+    For example, the expression `[1 2]' will result in an error
+    instead of being treated the same as `[1, 2]', and the expression
+
+      [ 1, 2,
+        3, 4 ]
+
+    will result in the vector [1 2 3 4] instead of a matrix.
+
+    If the value of `whitespace_in_literal_matrix' is "traditional",
+    Octave will convert spaces to a comma between identifiers and `('.
+    For example, given the matrix
+
+      m = [3 2]
+
+    the expression
+
+      [m (1)]
+
+    will be parsed as
+
+      [m, (1)]
+
+    and will result in
+
+      [3 2 1]
+
+    and the expression
+
+      [ 1, 2,
+        3, 4 ]
+
+    will result in a matrix because the newline character is converted
+    to a semicolon (row separator) even though there is a comma at the
+    end of the first line (trailing commas or semicolons are ignored).
+    This is apparently how Matlab behaves.
+
+    Any other value for `whitespace_in_literal_matrix' results in
+    behavior that is the same as traditional, except that Octave does
+    not convert spaces to a comma between identifiers and `('.
+    For example, the expression
+
+      [m (1)]
+
+    will produce 3.  This is the way Octave has always behaved.
+
+  * Line numbers in error messages for functions defined in files and
+    for script files now correspond to the file line number, not the
+    number of lines after the function keyword appeared.
+
+  * Octave now extracts help from script files.  The comments must
+    come before any other statements in the file.
+
+  * In function files, the first block of comments in the file will
+    now be interpreted as the help text if it doesn't look like the
+    Octave copyright notice.  Otherwise, Octave extracts the first set
+    of comments after the function keyword.
+
+  * The function clock is more accurate on systems that have the
+    gettimeofday() function.
+
+  * The standard output stream is now automatically flushed before
+    reading from stdin with any of the *scanf() functions.
+
+  * Expanded reference card.
+
+  * The Octave distribution now includes a frequently asked questions
+    file, with answers.  Better answers and more questions (with
+    answers!) are welcome.
+
+  * New option --verbose.  If Octave is invoked with --verbose and not
+    --silent, a message is printed if an octaverc file is read while
+    Octave is starting.
+
+  * An improved configure script generated by Autoconf 2.0.
+
+  * Lots of bug fixes.
+
+ +

Summary of changes for version 1.0

+ +
+  * 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  OP  for OP == +, -,
+    *, or ./ no longer crash Octave.
+
+  * More portability and configuration fixes.
+
+ +

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  for reporting them.
+
+  * The C++ matrix classes are now derived from a generic
+    template-based array class.
+
+  * The readline function operate-and-get-next (from bash) is now
+    available and bound to C-O by default.
+
+  * Octave now uses the version of readline currently distributed with
+    bash-1.13.  On some systems, interactive invocations of Octave
+    will now blink the cursor to show matching parens.
+
+  * By default, include files are now installed in
+    $prefix/include/octave instead of $prefix/include.
+
+  * Octave now uses a config.h file instead of putting all defines on
+    the compiler command line.
+
+ +

Summary of changes for version 0.79

+ +
+  * 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 a7952259f5d3 -r 373d2dba318e NEWS-2.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/NEWS-2.html Thu Oct 13 17:41:24 2016 +0200 @@ -0,0 +1,1274 @@ + + + + Changes in Octave version 2 + + + +

News for Octave Version 2

+
+ +

Summary of changes for version 2.0.17

+ +

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.

+ +

Summary of changes for version 2.0.16

+ +

This is primarily a bug-fixing release.

+ +

Summary of changes for version 2.0.15

+ +

This is primarily a bug-fixing release.

+ + + +

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

+ +

This is a bug-fixing release. There are no new user-visible features.

+ +

Summary of changes for version 2.0.12

+ + + +

Summary of changes for version 2.0.11

+ + + +

Summary of changes for version 2.0.10

+ + + +

Summary of changes for version 2.0.9

+ +

This is a bug-fixing release, but there is one new user-visible +feature:

+ + + +

Summary of changes for version 2.0.8

+ +

This is a bug-fixing release. There are only a few new user-visible +features.

+ + + +

Summary of changes for version 2.0.7

+ +

This is a bug-fixing release. There are no new user-visible features.

+ +

Summary of changes for version 2.0.6

+ +

This is primarily a bug-fixing release. There are only a few new +user-visilbe features.

+ + + +

Summary of changes for version 2.0.5

+ + + +

Summary of changes for version 2.0.4

+ + + +

Summary of changes for version 2.0.3

+ + + +

Summary of changes for version 2.0.2

+ + + + +

Summary of changes for version 2.0.1

+ +

Other than bug fixes, there were no user-visible changes in version +2.0.1. + +

Summary of changes for version 2.0

+ +

+ + + diff -r a7952259f5d3 -r 373d2dba318e NEWS-3.2.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/NEWS-3.2.html Thu Oct 13 17:41:24 2016 +0200 @@ -0,0 +1,398 @@ +
+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 a7952259f5d3 -r 373d2dba318e NEWS-3.4.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/NEWS-3.4.html Thu Oct 13 17:41:24 2016 +0200 @@ -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 a7952259f5d3 -r 373d2dba318e NEWS-3.6.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/NEWS-3.6.html Thu Oct 13 17:41:24 2016 +0200 @@ -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 a7952259f5d3 -r 373d2dba318e NEWS-3.8.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/NEWS-3.8.html Thu Oct 13 17:41:24 2016 +0200 @@ -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 a7952259f5d3 -r 373d2dba318e NEWS-3.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/NEWS-3.html Thu Oct 13 17:41:24 2016 +0200 @@ -0,0 +1,222 @@ + + + +Notable Changes in Octave version 3 + + + + +

News for Octave Version 3

+ + + + + diff -r a7952259f5d3 -r 373d2dba318e NEWS-4.0.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/NEWS-4.0.html Thu Oct 13 17:41:24 2016 +0200 @@ -0,0 +1,339 @@ +
+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.
+