# HG changeset patch # User Jaroslav Hajek # Date 1264160592 -3600 # Node ID e320928eeb3aa2370b792e83dafc3e0ddecdc871 # Parent 973f585cfdf2d29f3ed9428f6bce81e0af81addd version 3.2.4 diff -r 973f585cfdf2 -r e320928eeb3a ChangeLog --- a/ChangeLog Fri Jan 22 10:21:33 2010 +0100 +++ b/ChangeLog Fri Jan 22 12:43:12 2010 +0100 @@ -1,3 +1,7 @@ +2010-01-22 Jaroslav Hajek + + Version 3.2.4 released. + 2010-01-19 Jaroslav Hajek * octMakefile.in: Add acx_pthread.m4 to CONF_DISTFILES. diff -r 973f585cfdf2 -r e320928eeb3a WWW/NEWS-1.html --- a/WWW/NEWS-1.html Fri Jan 22 10:21:33 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1644 +0,0 @@ - - - - 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.org.
-
-  * The patterns accepted by the save and clear commands now work like
-    file name globbing patterns instead of regular expressions.  I
-    apologize for any inconvenience this change may cause, but file
-    name globbing seems like a more reasonable style of pattern
-    matching for this purpose.
-
-  * It is now possible to specify tolerances and other optional inputs
-    for dassl, fsolve, lsode, npsol, qpsol, and quad.  For each of
-    these functions, there is a corresponding function X_options,
-    which takes a keyword and value arguments.  If invoked without any
-    arguments, the X_options functions print a list of possible
-    keywords and current values.  For example,
-
-      npsol_options ()
-
-    prints a list of possible options with values, and
-
-      npsol_options ("major print level", 10)
-
-    sets the major print level to 10.
-
-    The keyword match is not case sensitive, and the keywords may be
-    abbreviated to the shortest unique match.  For example,
-
-      npsol_options ("ma p", 10)
-
-    is equivalent to the statement shown above.
-
-  * The new built-in variable save_precision can be used to set the
-    number of digits preserved by the ASCII save command.
-
-  * Assignment of [] now works in most cases to allow you to delete
-    rows or columns of matrices and vectors.  For example, given a
-    4x5 matrix A, the assignment
-
-      A (3, :) = []
-
-    deletes the third row of A, and the assignment
-
-      A (:, 1:2:5) = []
-
-    deletes the first, third, and fifth columns.
-
-  * Variable argument lists.  Octave now has a real mechanism for
-    handling functions that take an unspecified number of arguments,
-    so it is no longer necessary to place an upper bound on the number
-    of optional arguments that a function can accept.
-
-    Here is an example of a function that uses the new syntax to print
-    a header followed by an unspecified number of values:
-
-      function foo (heading, ...)
-        disp (heading);
-        va_start ();
-        while (--nargin)
-          disp (va_arg ());
-        endwhile
-      endfunction
-
-    Note that the argument list must contain at least one named
-    argument (this restriction may eventually be removed), and the
-    ellipsis must appear as the last element of the argument list.
-
-    Calling va_start() positions an internal pointer to the first
-    unnamed argument and allows you to cycle through the arguments
-    more than once.  It is not necessary to call va_start() if you
-    do not plan to cycle through the arguments more than once.
-
-  * Recursive functions should work now.
-
-  * The environment variable OCTAVE_PATH is now handled in the same
-    way as TeX handles TEXINPUTS.  If the path starts with `:', the
-    standard path is prepended to the value obtained from the
-    environment.  If it ends with `:' the standard path is appended to
-    the value obtained from the environment.
-
-  * New functions, from Kurt Hornik (hornik@neuro.tuwien.ac.at) and
-    the Department of Probability Theory and Statistics TU Wien,
-    Austria:
-
-     corrcoef    -- corrcoef (X, Y) is the correlation between the i-th
-                    variable in X and the j-th variable in Y
-                    corrcoef (X) is corrcoef (X, X)
-     cov         -- cov (X, Y) is the covariance between the i-th
-                    variable in X and the j-th variable in Y
-                    cov (X) is cov (X, X)
-     gls         -- generalized least squares estimation
-     kurtosis    -- kurtosis(x) = N^(-1) std(x)^(-4) SUM_i (x(i)-mean(x))^4 - 3
-                    If x is a matrix, return the row vector containing
-                    the kurtosis of each column
-     mahalanobis -- returns Mahalanobis' D-square distance between the
-                    multivariate samples X and Y, which must have the
-                    same number of components (columns), but may have
-                    a different number of observations (rows)
-     ols         -- ordinary least squares estimation
-     pinv        -- returns the pseudoinverse of X; singular values
-                    less than tol are ignored
-     skewness    -- skewness (x) = N^(-1) std(x)^(-3) SUM_i (x(i)-mean(x))^3
-                    if x is a matrix, return the row vector containing
-                    the skewness of each column
-
-  * Errors in user-supplied functions called from dassl, fsolve,
-    lsode, npsol, and quad are handled more gracefully.
-
-  * Programming errors in the use of the C++ classes within Octave
-    should no longer cause Octave to abort.  Instead, Octave's error
-    handler function is called and execution continues as best as is
-    possible.  This should result in eventually returning control to
-    the top-level Octave prompt.  (It would be nice to have a real
-    exception handling mechanism...)
-
-  * A number of memory leaks have been eliminated.  Thanks to
-    Fong Kin Fui  for reporting them.
-
-  * The C++ matrix classes are now derived from a generic
-    template-based array class.
-
-  * The readline function operate-and-get-next (from bash) is now
-    available and bound to C-O by default.
-
-  * Octave now uses the version of readline currently distributed with
-    bash-1.13.  On some systems, interactive invocations of Octave
-    will now blink the cursor to show matching parens.
-
-  * By default, include files are now installed in
-    $prefix/include/octave instead of $prefix/include.
-
-  * Octave now uses a config.h file instead of putting all defines on
-    the compiler command line.
-
- -

Summary of changes for version 0.79

- -
-  * 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.org.
-
-  * If gplot (or gsplot) is given a string to plot, and the string
-    does not name a file, Octave will pass the string along to gnuplot
-    directly.  This allows commands like
-
-      gplot "sin (x)" w l, data w p
-
-    to work (assuming that data is a variable containing a matrix of
-    values).
-
-  * Long options (--help, --version, etc.) are supported.
-
- -

Summary of changes for version 0.75

- -
-  * 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 973f585cfdf2 -r e320928eeb3a WWW/NEWS-2.html --- a/WWW/NEWS-2.html Fri Jan 22 10:21:33 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,989 +0,0 @@ - - - - Changes in Octave version 2 - - - -

News for Octave Version 2

-
- -

Summary of changes for version 2.0.10

- -
    -
  • The built-in variable `PWD' has been removed. If you need to get - the value of the current working directory, use the pwd() function - instead. -
  • -

    -

  • For compatibility with Matlab, Octave's lyap function now solves -
    -      A*X + X*A' + C = 0
    -
    - instead of -
    -      A'*X + X*A + C = 0
    -
    - To try to avoid confusion for people who are used to the way - Octave behaved in previous versions, a warning is printed the - first time lyap is called in a given session. To completely - disable the warning, simply add -
    -      global __disable_lyap_interface_change_warning__;
    -
    - to your ~/.octaverc file. The warning will eventually disappear - for good in some future version of Octave. -
  • -

    -

  • New built-in functions for computing Bessel functions: - besseli, besselj, besselk, and bessely. -
  • -

    -

  • The gammai and betai functions are now implemented as built-in - functions rather than function files. -
  • -

    -

  • The new built-in variable `implicit_num_to_str_ok' controls - whether Octave converts expressions like `[97, 98, 99, "123"]' to - strings. The default value is 0 unless you use --traditional. -
  • -

    -

  • The new built-in variable `fixed_point_format' controls whether - Octave uses a scaled fixed-point format for displaying matrices. - The default value is 0 unless you use --traditional. -
  • -

    -

  • The function sumsq now computes sum (x .* conj (x)) for complex values. -
  • -

    -

  • Dynamically linked functions can be cleared. -
  • -

    -

  • If a .oct file has a time stamp more recent than the time that it - was loaded, it is automatically reloaded. Reloading a .oct file - may cause several functions to be cleared automatically. By - default, a warning is printed that lists the names of the - functions that will be cleared. You can suppress the message by - setting the new built-in variable `warn_reload_forces_clear' to 0. -
  • -

    -

  • Global variables are now initialized to the empty matrix, for - compatibility with Matlab. -
  • -

    -

  • Explicit initialization of global variables only happens once. - For example, after the following statements are evaluated, g still - has the value 1. -
    -      global g = 1
    -      global g = 2
    -
    - This is useful for initializing global variables that are used to - maintain state information that is shared among several functions. -
  • -

    -

  • The new built-in variable max_recursion_depth allows you to - prevent Octave from attempting infinite recursion. The default - value is 256. -
  • -

    -

  • Octave now uses readline version 2.1 and kpathsea 3.0. -
  • -

    -

  • The libreadline and libkpathsea libraries are no longer installed. -
  • -

    -

  • The libcruft, liboctave, and liboctinterp libraries are now - installed in $libdir/octave instead of just $libdir. -
  • -

    -

  • It's no longer necessary to have libg++, but you do need to have - the GNU implementation of libstdc++. If you are using gcc 2.7.2, - libstdc++ is distributed as part of libg++ 2.7.2. For later - versions, libstdc++ is distributed separately. For egcs, - libstdc++ is included with the compiler distribution. -
  • -
- -

Summary of changes for version 2.0.9

- -This is a bug-fixing release, but there is one new user-visible -feature: - -
    -
  • It is now possible to specify a label for lines in the plot key - when using the plot function. For example, -
    -      plot (x, y, "-*;sin(x);")
    -
    - plots y vs. x using the linespoints style and sets the title of - the line in the key to be `sin(x)' -
  • -
- -

Summary of changes for version 2.0.8

- -This is a bug-fixing release. There are only a few new user-visible -features. - -
    -
  • If the argument to eig() is symmetric, Octave uses the specialized - Lapack subroutine for symmetric matrices for a significant - increase in performance. -
  • -

    -

  • It is now possible to use the mkoctfile script to create .oct - files from multiple source and object files. -
  • -
- -

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. - -
    -
  • The new built-in variable default_eval_print_flag controls whether - Octave prints the results of commands executed by eval() that do - not end with semicolons. The default is 1. -
  • -

    -

  • The new built-in constant OCTAVE_HOME specifies the top-level - directory where Octave is installed. -
  • -

    -

  • Octave no longer includes functions to work with NPSOL or QPSOL, - because they are not free software. -
  • -
- -

Summary of changes for version 2.0.5

- -
    -
  • A `switch' statement is now available. See the Statements chapter - in the manual for details. -
  • -

    -

  • Commands like ls, save, and cd may now also be used as formal - parameters for functions. -
  • -

    -

  • More tests. -
  • -
- -

Summary of changes for version 2.0.4

- -
    -
  • It is now possible to use commands like ls, save, and cd as simple - variable names. They still cannot be used as formal parameters - for functions, or as the names of structure variables. Failed - assignments leave them undefined (you can recover the orginal - function definition using clear). -
  • -

    -

  • Is is now possible to invoke commands like ls, save, and cd as - normal functions (for example, load ("foo", "x", "y", "z")). -
  • -
- -

Summary of changes for version 2.0.3

- -
    -
  • The manual has been completely revised and now corresponds much - more closely to the features of the current version. -
  • -

    -

  • The return value for assignment expressions is now the RHS since - that is more consistent with the way other programming languages - work. However, Octave still prints the entire LHS value so that -
    -      x = zeros (1, 2);
    -      x(2) = 1
    -
    - still prints -
    -      x =
    -
    -        0  1
    -
    -
    - but an assignment like -
    -      z = x(2) = 1
    -
    - sets z to 1 (not [ 0, 1 ] as in previous versions of Octave). -
  • -

    -

  • It is now much easier to make binary distributions. See the - Binary Distributions section of the manual for more details. -
  • -
- -

Summary of changes for version 2.0.2

- -
    - -
  • Octave now stops executing commands from a script file if an error - is encountered. -
  • -

    -

  • The return, and break commands now cause Octave to quit executing - commands from script files. When used in invalid contexts, the - break, continue, and return commands are now simply ignored - instead of producing parse errors. -
  • -

    -

  • size ("") is now [0, 0]. -
  • -

    -

  • New functions: -
    -
    sleep
    -
    pause execution for a specified number of seconds
    -
    usleep
    -
    pause execution for a specified number of microseconds
    -
    -
  • -
- - -

Summary of changes for version 2.0.1

- -

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

Summary of changes for version 2.0

- -

-

    -
  • The set and show commands for setting and displaying gnuplot - parameters have been replaced by gset and gshow. This change will - probably break lots of things, but it is necessary to allow for - compatibility with the Matlab graphics and GUI commands in a - future version of Octave. (For now, the old set and show commands - do work, but they print an annoying warning message to try to get - people to switch to using gset.) -
  • -

    -

  • Octave has been mostly ported to Windows NT and Windows 95 using - the beta 17 release of the Cygnus GNU-WIN32 tools. Not everything - works, but it is usable. See the file README.WINDOWS for more - information. -
  • -

    -

  • Dynamic linking works on more systems using dlopen() and friends - (most modern Unix systems) or shl_load() and friends (HP/UX - systems). A simple example is provided in examples/hello.cc. - For this feature to work, you must configure Octave with - --enable-shared. You may also need to have a shared-library - version of libg++ and libstdc++. -
  • -

    -

  • New data types can be added to Octave by writing a C++ class. On - systems that support dynamic linking, new data types can be added - to an already running Octave binary. A simple example appears in - the file examples/make_int.cc. Other examples are the standard - Octave data types defined in the files src/ov*.{h,cc} and - src/op-*.cc. -
  • -

    -

  • The configure option --enable-bounds-check turns on bounds - checking on element references for Octave's internal array and - matrix classes. It's enabled by default. To disable this - feature, configure Octave with --disable-bounds-check. -
  • -

    -

  • The C-style I/O functions (fopen, fprintf, etc.) have been - rewritten to be more compatible with Matlab. The fputs function - has also been added. Usage of the *printf functions that was - allowed in previous versions of Octave should still work. - However, there is no way to make the new versions of the *scanf - functions compatible with Matlab *and* previous versions of - Octave. An optional argument to the *scanf functions is now - available to make them behave in a way that is compatible with - previous versions of Octave. -
  • -

    -

  • Octave can now read files that contain columns of numbers only, - with no header information. The name of the loaded variable is - constructed from the file name. Each line in the file must have - the same number of elements. -
  • -

    -

  • The interface to the pager has changed. The new built-in variable - `page_output_immediately' controls when Octave sends output to the - pager. If it is nonzero, Octave sends output to the pager as soon - as it is available. Otherwise, Octave buffers its output and - waits until just before the prompt is printed to flush it to the - pager. -
  • -

    -

  • Expressions of the form -
    -      A(i,j) = x
    -
    - where X is a scalar and the indices i and j define a matrix of - elements now work as you would expect rather than giving an error. - I am told that this is how Matlab 5.0 will behave when it is - released. -
  • -

    -

  • Indexing of character strings now works. -
  • -

    -

  • The echo command has been implemented. -
  • -

    -

  • The document command is now a regular function. -
  • -

    -

  • New method for handling errors: -
    -      try
    -        BODY
    -      catch
    -        CLEANUP
    -      end_try_catch
    -
    - Where BODY and CLEANUP are both optional and may contain any - Octave expressions or commands. The statements in CLEANUP are - only executed if an error occurs in BODY. - -

    No warnings or error messages are printed while BODY is - executing. If an error does occur during the execution of BODY, - CLEANUP can access the text of the message that would have been - printed in the builtin constant __error_text__. This is the same - as eval (TRY, CATCH) (which may now also use __error_text__) but - it is more efficient since the commands do not need to be parsed - each time the TRY and CATCH statements are evaluated. -

  • -

    -

  • Octave no longer parses the help command by grabbing everything - after the keyword `help' until a newline character is read. To - get help for `;' or `,', now, you need to use the command - `help semicolon' or `help comma'. -
  • -

    -

  • Octave's parser now does some simple constant folding. This means - that expressions like 3*i are now evaluated only once, when a - function is compiled, and the right hand side of expressions like - a = [1,2;3,4] are treated as true matrix constants rather than - lists of elements which must be evaluated each time they are - needed. -
  • -

    -

  • Built-in variables that can take values of "true" and "false" can - now also be set to any nonzero scalar value to indicate "true", - and 0 to indicate "false". -
  • -

    -

  • New built-in variables `history_file', `history_size', and - `saving_history'. -
  • -

    -

  • New built-in variable `string_fill_char' specifies the character - to fill with when creating arrays of strings. -
  • -

    -

  • If the new built-in variable `gnuplot_has_frames' is nonzero, - Octave assumes that your copy of gnuplot includes support for - multiple plot windows when using X11. - - If the new built-in variable `gnuplot_has_multiplot' is nonzero, - Octave assumes that your copy of gnuplot has the multiplot support - that is included in recent 3.6beta releases. - - The initial values of these variables are determined by configure, - but can be changed in your startup script or at the command line - in case configure got it wrong, or if you upgrade your gnuplot - installation. -
  • -

    -

  • The new plot function `figure' allows multiple plot windows when - using newer versions of gnuplot with X11. -
  • -

    -

  • Octave now notices when the plotter has exited unexpectedly. -
  • -

    -

  • New built-in variable `warn_missing_semicolon'. If nonzero, Octave - will warn when statements in function definitions don't end in - semicolons. The default value is 0. -
  • -

    -

  • Octave now attempts to continue after floating point exceptions - or out-of-memory errors. -
  • -

    -

  • If Octave crashes, it now attempts to save all user-defined - variables in a file named `octave-core' in the current directory - before exiting. -
  • -

    -

  • It is now possible to get the values of individual option settings - for the dassl, fsolve, lsode, npsol, qpsol, and quad functions - using commands like -
    -      dassl_reltol = dassl_options ("relative tolerance");
    -
    -
  • -

    -

  • The svd() function no longer computes the left and right singular - matrices unnecessarily. This can significantly improve - performance for large matrices if you are just looking for the - singular values. -
  • -

    -

  • The filter() function is now a built-in function. -
  • -

    -

  • New function randn() returns a pseudo-random number from a normal - distribution. The rand() and randn() functions have separate - seeds and generators. -
  • -

    -

  • Octave's command-line arguments are now available in the built-in - variable `argv'. The program name is also available in the - variables `program_invocation_name' and `program_name'. If - executing a script from the command line (e.g., octave foo.m) or - using the `#! /bin/octave' hack, the program name is set to the - name of the script. -
  • -

    -

  • New built-in variable `completion_append_char' used as the - character to append to successful command-line completion - attempts. The default is " " (a single space). -
  • -

    -

  • Octave now uses a modified copy of the readline library from - version 1.14.5 of GNU bash. -
  • -

    -

  • In prompt strings, `\H' expands to the whole host name. -
  • -

    -

  • New built-in variable `beep_on_error'. If nonzero, Octave will try - to ring your terminal's bell before printing an error message. - The default value is 0. -
  • -

    -

  • For functions defined from files, the type command now prints the - text of the file. You can still get the text reconstructed from - the parse tree by using the new option -t (-transformed). -
  • -

    -

  • New command-line argument --traditional sets the following - preference variables for compatibility with Matlab: -
    -      PS1                           = ">> "
    -      PS2                           = ""
    -      beep_on_error                 = 1
    -      default_save_format           = "mat-binary"
    -      define_all_return_values      = 1
    -      do_fortran_indexing           = 1
    -      empty_list_elements_ok        = 1
    -      implicit_str_to_num_ok        = 1
    -      ok_to_lose_imaginary_part     = 1
    -      page_screen_output            = 0
    -      prefer_column_vectors         = 0
    -      prefer_zero_one_indexing      = 1
    -      print_empty_dimensions        = 0
    -      treat_neg_dim_as_zero         = 1
    -      warn_function_name_clash      = 0
    -      whitespace_in_literal_matrix  = "traditional"
    -
    -
  • -

    -

  • New functions: -
    -
    readdir
    -
    returns names of files in directory as array of strings -
    -
    mkdir
    -
    create a directory -
    -
    rmdir
    -
    remove a directory -
    -
    rename
    -
    rename a file -
    -
    unlink
    -
    delete a file -
    -
    umask
    -
    set permission mask for file creation -
    -
    stat
    -
    get information about a file -
    -
    lstat
    -
    get information about a symbolic link -
    -
    glob
    -
    perform filename globbing -
    -
    fnmatch
    -
    match strings with filename globbing patterns -
    -
    more
    -
    turn the pager on or off -
    -
    gammaln
    -
    alias for lgamma -
    -
    -
  • -

    -

  • New audio functions from Andreas Weingessel: -
    -
    lin2mu
    -
    linear to mu-law encoding -
    -
    loadaudio
    -
    load an audio file to a vector -
    -
    mu2lin
    -
    mu-law to linear encoding -
    -
    playaudio
    -
    play an audio file -
    -
    record
    -
    record sound and store in vector -
    -
    saveaudio
    -
    save a vector as an audio file -
    -
    setaudio
    -
    executes mixer shell command -
    -
    -
  • -

    -

  • New plotting functions from Vinayak Dutt. Ones dealing with - multiple plots on one page require features from gnuplot 3.6beta - (or later). -
    -
    bottom_title
    -
    put title at the bottom of the plot -
    -
    mplot
    -
    multiplot version of plot -
    -
    multiplot
    -
    switch multiple-plot mode on or off -
    -
    oneplot
    -
    return to one plot per page -
    -
    plot_border
    -
    put a border around plots -
    -
    subplot
    -
    position multiple plots on a single page -
    -
    subwindow
    -
    set subwindow position for next plot -
    -
    top_title
    -
    put title at the top of the plot -
    -
    zlabel
    -
    put a label on the z-axis -
    -
    -
  • -

    -

  • New string functions -
    -
    bin2dec
    -
    convert a string of ones and zeros to an integer -
    -
    blanks
    -
    create a string of blanks -
    -
    deblank
    -
    delete trailing blanks -
    -
    dec2bin
    -
    convert an integer to a string of ones and zeros -
    -
    dec2hex
    -
    convert an integer to a hexadecimal string -
    -
    findstr
    -
    locate occurrences of one string in another -
    -
    hex2dec
    -
    convert a hexadecimal string to an integer -
    -
    index
    -
    return position of first occurrence a string in another -
    -
    rindex
    -
    return position of last occurrence a string in another -
    -
    split
    -
    divide one string into pieces separated by another -
    -
    str2mat
    -
    create a string matrix from a list of strings -
    -
    strrep
    -
    replace substrings in a string -
    -
    substr
    -
    extract a substring -
    -
    -

    - The following functions return a matrix of ones and zeros. - Elements that are nonzero indicate that the condition was true for - the corresponding character in the string array. -

    -
    isalnum
    -
    letter or a digit -
    -
    isalpha
    -
    letter -
    -
    isascii
    -
    ascii -
    -
    iscntrl
    -
    control character -
    -
    isdigit
    -
    digit -
    -
    isgraph
    -
    printable (but not space character) -
    -
    islower
    -
    lower case -
    -
    isprint
    -
    printable (including space character) -
    -
    ispunct
    -
    punctuation -
    -
    isspace
    -
    whitespace -
    -
    isupper
    -
    upper case -
    -
    isxdigit
    -
    hexadecimal digit -
    -
    -

    - These functions return new strings. -

    -
    tolower
    -
    convert to lower case -
    -
    toupper
    -
    convert to upper case -
    -
    -
  • -

    -

  • New function, fgetl. Both fgetl and fgets accept an optional - second argument that specifies a maximum number of characters to - read, and the function fgets is now compatible with Matlab. -
  • -

    -

  • Printing in hexadecimal format now works (format hex). It is also - possible to print the internal bit representation of a value - (format bit). Note that these formats are only implemented for - numeric values. -
  • -

    -

  • Additional structure features: -
      -
    • Name completion now works for structures. -
    • -
    • Values and names of structure elements are now printed by - default. The new built-in variable `struct_levels_to_print' - controls the depth of nested structures to print. The default - value is 2. -
    • -
    • New functions: -
      -
      struct_contains (S, NAME)
      -
      returns 1 if S is a structure with element NAME; otherwise returns 0. -
      -
      struct_elements (S)
      -
      returns the names of all elements of structure S in an array of - strings. -
      -
      -
    • -
    -
  • -

    -

  • New io/subprocess functions: -
    -
    fputs
    -
    write a string to a file with no formatting -
    -
    popen2
    -
    start a subprocess with 2-way communication -
    -
    mkfifo
    -
    create a FIFO special file -
    -
    popen
    -
    open a pipe to a subprocess -
    -
    pclose
    -
    close a pipe from a subprocess -
    -
    waitpid
    -
    check the status of or wait for subprocesses -
    -
    -
  • -

    -

  • New time functions: -
    -
    asctime
    -
    format time structure according to local format -
    -
    ctime
    -
    equivalent to `asctime (localtime (TMSTRUCT))' -
    -
    gmtime
    -
    return time structure corresponding to UTC -
    -
    localtime
    -
    return time structure corresponding to local time zone -
    -
    strftime
    -
    print given time structure using specified format -
    -
    time
    -
    return current time -
    -
    -

    - The `clock' and `date' functions are now implemented in M-files - using these basic functions. -

  • -

    -

  • Access to additional Unix system calls: -
    -
    dup2
    -
    duplicate a file descriptor -
    -
    exec
    -
    replace current process with a new process -
    -
    fcntl
    -
    control open file descriptors -
    -
    fork
    -
    create a copy of the current process -
    -
    getpgrp
    -
    return the process group id of the current process -
    -
    getpid
    -
    return the process id of the current process -
    -
    getppid
    -
    return the process id of the parent process -
    -
    getuid
    -
    return the real user id of the current process -
    -
    getgid
    -
    return the real group id of the current process -
    -
    geteuid
    -
    return the effective user id of the current process -
    -
    getegid
    -
    return the effective group id of the current process -
    -
    pipe
    -
    create an interprocess channel -
    -
    -
  • -

    -

  • Other new functions: -
    -
    commutation_matrix
    -
    compute special matrix form -
    -
    duplication_matrix
    -
    compute special matrix form -
    -
    common_size.m
    -
    bring arguments to a common size -
    -
    completion_matches
    -
    perform command completion on string -
    -
    tilde_expand
    -
    perform tilde expansion on string -
    -
    meshgrid
    -
    compatible with Matlab's meshgrid function -
    -
    tmpnam
    -
    replaces octave_tmp_file_name -
    -
    atexit
    -
    register functions to be called when Octave exits -
    -
    putenv
    -
    define an environment variable -
    -
    bincoeff
    -
    compute binomial coefficients -
    -
    nextpow2
    -
    compute the next power of 2 greater than a number -
    -
    detrend
    -
    remove a best fit polynomial from data -
    -
    erfinv
    -
    inverse error function -
    -
    shift
    -
    perform a circular shift on the elements of a matrix -
    -
    pow2
    -
    compute 2 .^ x -
    -
    log2
    -
    compute base 2 logarithms -
    -
    diff
    -
    compute differences of matrix elements -
    -
    vech
    -
    stack columns of a matrix below the diagonal -
    -
    vec
    -
    stack columns of a matrix to form a vector -
    -
    xor
    -
    compute exclusive or -
    -
    -
  • -

    -

  • Functions for getting info from the password database on Unix systems: -
    -
    getpwent
    -
    read entry from password-file stream, opening if necessary -
    -
    getpwuid
    -
    search for password entry with matching user ID -
    -
    getpwnam
    -
    search for password entry with matching username -
    -
    setpwent
    -
    rewind the password-file stream -
    -
    endpwent
    -
    close the password-file stream -
    -
    -
  • -

    -

  • Functions for getting info from the group database on Unix systems: -
    -
    getgrent
    -
    read entry from group-file stream, opening if necessary -
    -
    getgrgid
    -
    search for group entry with matching group ID -
    -
    getgrnam
    -
    search for group entry with matching group name -
    -
    setgrent
    -
    rewind the pgroup-file stream -
    -
    endgrent
    -
    close the group-file stream -
    -
    -
  • -

    -

  • The New function octave_config_info returns a structure containing - information about how Octave was configured and compiled. -
  • -

    -

  • New function getrusage returns a structure containing system - resource usage statistics. The `cputime' function is now defined - in an M-file using getrusage. -
  • -

    -

  • The info reader is now a separate binary that runs as a - subprocess. You still need the info reader distributed with - Octave though, because there are some new command-line arguments - that are not yet available in the public release of Info. -
  • -

    -

  • There is a new built-in variable, INFO_PROGRAM, which is used as - the name of the info program to run. Its initial value is - $OCTAVE_HOME/lib/octave/VERSION/exec/ARCH/info, but that value can - be overridden by the environment variable OCTAVE_INFO_PROGRAM, or - the command line argument --info-program NAME, or by setting the - value of INFO_PROGRAM in a startup script. -
  • -

    -

  • There is a new built-in variable, EXEC_PATH, which is used as - the list of directories to search when executing subprograms. Its - initial value is taken from the environment variable - OCTAVE_EXEC_PATH (if it exists) or PATH, but that value can be - overridden by the command line argument --exec-path PATH, or - by setting the value of EXEC_PATH in a startup script. If the - EXEC_PATH begins (ends) with a colon, the directories - $OCTAVE_HOME/lib/octave/VERSION/exec/ARCH and $OCTAVE_HOME/bin are - prepended (appended) to EXEC_PATH (if you don't specify a value - for EXEC_PATH explicitly, these special directories are prepended - to your PATH). -
  • -

    -

  • If it is present, Octave will now use an `ls-R' database file to - speed up recursive path searching. Octave looks for a file called - ls-R in the directory specified by the environment variable - OCTAVE_DB_DIR. If that is not set but the environment variable - OCTAVE_HOME is set, Octave looks in $OCTAVE_HOME/lib/octave. - Otherwise, Octave looks in the directory $datadir/octave (normally - /usr/local/lib/octave). -
  • -

    -

  • New examples directory. -
  • -

    -

  • There is a new script, mkoctfile, that can be used to create .oct - files suitable for dynamic linking. -
  • -

    -

  • Many more bug fixes. -
  • -

    -

  • ChangeLogs are now kept in each subdirectory.
  • - -
- - - diff -r 973f585cfdf2 -r e320928eeb3a WWW/index.html --- a/WWW/index.html Fri Jan 22 10:21:33 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,99 +0,0 @@ - - - - Octave -- a high-level language for numerical computations - - - -

Octave

- -

-Octave is a high-level language, primarily intended for numerical -computations. It provides a convenient command line interface for -solving linear and nonlinear problems numerically. -

-
- -

News

-

-Version 2.0.10 was released Friday February 6, 1998. Most bugs reported -since the release of version 2.0 have been fixed. -

- -

-Version 2.0 was released Tuesday December 10, 1996. There are many -new features including: -

    -
  • dynamic linking support on more systems
  • -
  • user-defined data types
  • -
  • many new functions
  • -
  • lots of bug fixes
  • -
-A more complete list of changes for version 2 -is a available as is an older list of changes for -versions up to 1.1.1. -

- -

Source and Binaries

-

-Octave source and binaries are available by anonymous ftp from -ftp://ftp.che.wisc.edu/pub/octave. -

- -

-Additional information about using - -Octave on OS/2 systems is available, thanks to the work of -Klaus Gebhardt. -

- -

- -Binaries for Windows NT/95 systems are also available, thanks to -the work of Mumit Khan. -

- -

Documentation

-

-To get started, there is a -brief introduction, and also the -preface to the manual. For more -detailed information, you can browse the -complete documentation, which has -been converted to HTML directly from the Texinfo source using -texi2html. -

- -

-If you still have questions, there is always the - -FAQ (with answers). -

- -

Mailing Lists

-

-There are three active mailing lists devoted to Octave. The -help-octave mailing list is available for questions related -to using, installing, and porting Octave that are not adequately -answered by the Octave manual or by the FAQ. The bug-octave -list is used for reporting bugs. the octave-sources list is -for posting sources and enhancements to Octave. -A complete archive of postings -and instructions for joining -the lists is also available. -

- -

Contributed Functions

-

-An archive of contributed functions for Octave is available from -http://www.tsc.uvigo.es/GTS/Octave. -

- -
-

-John W. Eaton
-jwe@octave.org
-

- - - diff -r 973f585cfdf2 -r e320928eeb3a WWW/mailing-lists/index.html --- a/WWW/mailing-lists/index.html Fri Jan 22 10:21:33 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,78 +0,0 @@ - - - -Octave Mailing List Archives - - - - -

Octave Mailing List Archives

-
- -

help-octave

-

General discussion about using and installing Octave

- -

-

-

-
- -

bug-octave

-

Bug reports (sometimes fixes are posted to this list)

- -

-

-

-
- -

octave-sources

-

Enhancements contributed by Octave users

- -

-

-

-
- -

How to join the mailing lists

- -

-If you would like to join the discussion and receive all messages sent -to these mailing lists, please send a short note to -help-request@octave.org (to join help-octave) or -bug-request@octave.org (to join bug-octave), or -sources-request@octave.org (to join octave-sources). -

- -

-Please do NOT send subscription requests directly to the lists -themselves. -

- -
-

-Back to the Octave home page. -

-
-

-John W. Eaton
-jwe@octave.org
-

- - diff -r 973f585cfdf2 -r e320928eeb3a WWW/readme.html --- a/WWW/readme.html Fri Jan 22 10:21:33 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,395 +0,0 @@ - - - - Octave -- a high-level language for numerical computations - - -

A Brief Introduction to Octave

- - -
- -

Overview

-

-Octave is a high-level language, primarily intended for numerical -computations. It provides a convenient command line interface for -solving linear and nonlinear problems numerically, and for performing -other numerical experiments. It may also be used as a batch-oriented -language. -

- -

Language Features

-

-The best way to introduce Octave's language is probably to show a few -simple examples. -

- -

-If you are new to Octave, I recommend that you try these examples to -begin learning Octave by using it. Lines marked with -octave:13> are lines you type, ending each with a carriage -return. Octave will respond with an answer, or by displaying a graph. -

- -

Creating a Matrix

- -

-To create a new matrix and store it in a variable so that it you can -refer to it later, type the command - -

-    octave:1> a = [ 1, 1, 2; 3, 5, 8; 13, 21, 34 ]
-
- -Octave will respond by printing the matrix in neatly aligned columns. -Ending a command with a semicolon tells Octave to not print the result -of a command. For example - -
-    octave:2> b = rand (3, 2);
-
- -will create a 3 row, 2 column matrix with each element set to a random -value between zero and one. -

- -

-To display the value of any variable, simply type the name of the -variable. For example, to display the value stored in the matrix -b, type the command - -

-    octave:3> b
-
- -

Matrix Arithmetic

- -

-Octave has a convenient operator notation for performing matrix -arithmetic. For example, to multiply the matrix a by a -scalar value, type the command - -

-    octave:4> 2 * a
-
- -

-To multiply the two matrices a and b, type the -command - -

-    octave:5> a * b
-
- -

-To form the matrix product transpose (a) * a, type the command - -

-    octave:6> a' * a
-
-

- -

Solving Linear Equations

- -

-To solve the set of linear equations Ax = b use the left -division operator, \: - -

-    octave:7> a \ b
-
- -This is conceptually equivalent to inv (A) * b, but avoids -computing the inverse of a matrix directly. -

- -

-If the coefficient matrix is singular, Octave will print a warning -message and compute a minimum norm solution. -

- -

Integrating Differential Equations

- -

-Octave has built-in functions for solving nonlinear differential -equations of the form - -

-    dx
-    -- = f (x, t)
-    dt
-
- -with the initial condition - -
-    x(t = t0) = x0
-
-

- -

-For Octave to integrate equations of this form, you must first provide a -definition of the function f (x, t). This is -straightforward, and may be accomplished by entering the function body -directly on the command line. For example, the following commands -define the right hand side function for an interesting pair of -nonlinear differential equations. Note that while you are entering a -function, Octave responds with a different prompt, to indicate that it -is waiting for you to complete your input. - -

-    octave:8> function xdot = f (x, t) 
-    >
-    >  r = 0.25;
-    >  k = 1.4;
-    >  a = 1.5;
-    >  b = 0.16;
-    >  c = 0.9;
-    >  d = 0.8;
-    >
-    >  xdot(1) = r*x(1)*(1 - x(1)/k) - a*x(1)*x(2)/(1 + b*x(1));
-    >  xdot(2) = c*a*x(1)*x(2)/(1 + b*x(1)) - d*x(2);
-    >
-    > endfunction
-
-

- -

-Given the initial condition - -

-    x0 = [1; 2];
-
- -and the set of output times as a column vector (note that the first -output time corresponds to the initial condition given above) - -
-    t = linspace (0, 50, 200)';
-
- -it is easy to integrate the set of differential equations: - -
-    x = lsode ("f", x0, t);
-
- -

-The function lsode uses the Livermore Solver for Ordinary -Differential Equations, described in A. C. Hindmarsh, ODEPACK, a -Systematized Collection of ODE Solvers, in: Scientific Computing, -R. S. Stepleman et al. (Eds.), North-Holland, Amsterdam, 1983, pages -55-64. -

- -

Producing Graphical Output

- -

-To display the solution of the previous example graphically, use the -command - -

-    plot (t, x)
-
-

- -

-If you are using the X Window System, Octave will automatically create -a separate window to display the plot. If you are using a terminal that -supports some other graphics commands, you will need to tell Octave what -kind of terminal you have. Type the command -

- -
-    gset term
-
- -to see a list of the supported terminal types. Octave uses -gnuplot to display graphics, and can display graphics on any -terminal that is supported by gnuplot. - -

-To capture the output of the plot command in a file rather than sending -the output directly to your terminal, you can use a set of commands like -this - -

-    gset term postscript
-    gset output "foo.ps"
-    replot
-
- -This will work for other types of output devices as well. Octave's -gset command is really just piped to the gnuplot -subprocess, so that once you have a plot on the screen that you like, -you should be able to do something like this to create an output file -suitable for your graphics printer. -

- -

-Or, you can eliminate the intermediate file by using commands like this - -

-    gset term postscript
-    gset output "|lpr -Pname_of_your_graphics_printer"
-    replot
-
- -

Editing What You Have Typed

- -

-At the Octave prompt, you can recall, edit, and reissue previous -commands using Emacs- or vi-style editing commands. The default -keybindings use Emacs-style commands. -

- -

Getting Help

- -

-Octave has an extensive help facility. The same documentation that is -available in printed form is also available from the Octave prompt, -because both forms of the documentation are created from the same input -file. -

- -

-In order to get good help you first need to know the name of the command -that you want to use. This name of the function may not always be -obvious, but a good place to start is to just type help. -This will show you all the operators, reserved words, functions, -built-in variables, and function files. You can then get more -help on anything that is listed by simply including the name as an -argument to help. For example, - -

-    help plot
-
- -will display the help text for the plot function. -

- -

-The complete text of the manual is availabe from Octave's command line -using the command help -i. Because it is written in Texinfo, -it is also possible to put -the manual -on the WWW. -

- -

Distribution Terms

-

-Octave is free software; you can redistribute it and/or modify it -under the terms of the -GNU -General Public License as published by the Free Software -Foundation; either version 3 of the License, or (at your option) any -later version. -

- -

-Octave is distributed in the hope that it will be useful, but WITHOUT -ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the file COPYING for more -details. -

- -

Availability

-

-The latest released version of Octave is always available via -anonymous ftp from -ftp://ftp.che.wisc.edu/pub/octave. -Complete source and binaries for several popular systems are available. -

- -

Installation and Bugs

-

-Octave requires approximately 125MB of disk storage to unpack and -compile from source (significantly less if you don't compile with -debugging symbols or create shared libraries). Once installed, Octave -requires approximately 65MB of disk space (again, considerably less if -you don't build shared libraries or the binaries and libraries do not -include debugging symbols). -

- -

-In order to build Octave, you will need a current version of g++, -libstdc++, and GNU make. -

- -

-You must have GNU Make to compile Octave. Octave's Makefiles -use features of GNU Make that are not present in other versions of -make. GNU Make is very portable and easy to install. -

- -

-See the notes in the files INSTALL and INSTALL.OCTAVE for more -specific installation instructions, including directions for -installing Octave from a binary distribution. -

- -

-The file BUGS contains a recommended procedure for reporting bugs, as -well as a list of known problems and possible fixes. -

- -

Documentation

- -

-Octave's manual has been revised for version 2.0, but it is lagging a -bit behind the development of the software. In particular, there is -currently no complete documentation of the C++ class libraries or the -support for dynamic linking and user-defined data types. If you -notice ommissions or inconsistencies, please report them as bugs to -bug@@octave.org. Specific suggestions for ways to -improve Octave and its documentation are always welcome. -

- -

Implementation

-

-Octave is being developed with the Free Software Foundation's make, -bison (a replacement for YACC), flex (a replacement for lex), gcc/g++, -and libstdc++ on an Intel Pentium II system running Linux/GNU. It -should be possible to install it on any machine that runs GCC/G++. It -may also be possible to install it using other implementations of -these tools, but it will most certainly require much more work. Do -yourself a favor and get the GNU development tools, either via -anonymous ftp from ftp.gnu.org or by writing the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301, USA. -

- -

-The underlying numerical solvers are currently standard Fortran ones -like Lapack, Linpack, Odepack, the Blas, etc., packaged in a library -of C++ classes (see the files in the libcruft and liboctave -subdirectories). If possible, the Fortran subroutines are compiled -with the system's Fortran compiler, and called directly from the C++ -functions. If that's not possible, they are translated with f2c and -compiled with a C compiler. Better performance is usually achieved if -the intermediate translation to C is avoided. -

- -

-The library of C++ classes may also be useful by itself. -

- -
-

-Back to the Octave home page. -

-
-

-John W. Eaton
-jwe@octave.org
-

- - diff -r 973f585cfdf2 -r e320928eeb3a doc/ChangeLog --- a/doc/ChangeLog Fri Jan 22 10:21:33 2010 +0100 +++ b/doc/ChangeLog Fri Jan 22 12:43:12 2010 +0100 @@ -1,3 +1,7 @@ +2010-01-22 Jaroslav Hajek + + Version 3.2.4 released. + 2009-10-11 Rik * intepreter/Makefile.in: Fix broken command to create octave.dvi diff -r 973f585cfdf2 -r e320928eeb3a libcruft/ChangeLog --- a/libcruft/ChangeLog Fri Jan 22 10:21:33 2010 +0100 +++ b/libcruft/ChangeLog Fri Jan 22 12:43:12 2010 +0100 @@ -1,3 +1,7 @@ +2010-01-22 Jaroslav Hajek + + Version 3.2.4 released. + 2009-09-18 Jaroslav Hajek Version 3.2.3 released. diff -r 973f585cfdf2 -r e320928eeb3a liboctave/ChangeLog --- a/liboctave/ChangeLog Fri Jan 22 10:21:33 2010 +0100 +++ b/liboctave/ChangeLog Fri Jan 22 12:43:12 2010 +0100 @@ -1,3 +1,7 @@ +2010-01-22 Jaroslav Hajek + + Version 3.2.4 released. + 2010-01-22 Jaroslav Hajek * Makefile.in: Add PTHREAD_CFLAGS to LINK_DEPS. diff -r 973f585cfdf2 -r e320928eeb3a scripts/ChangeLog --- a/scripts/ChangeLog Fri Jan 22 10:21:33 2010 +0100 +++ b/scripts/ChangeLog Fri Jan 22 12:43:12 2010 +0100 @@ -1,3 +1,7 @@ +2010-01-22 Jaroslav Hajek + + Version 3.2.4 released. + 2009-11-18 Ben Abbott * plot/orient.m: Flip papersize and paperposition when orientation diff -r 973f585cfdf2 -r e320928eeb3a src/ChangeLog --- a/src/ChangeLog Fri Jan 22 10:21:33 2010 +0100 +++ b/src/ChangeLog Fri Jan 22 12:43:12 2010 +0100 @@ -1,3 +1,7 @@ +2010-01-22 Jaroslav Hajek + + Version 3.2.4 released. + 2009-10-15 Jaroslav Hajek * variables.cc (extract_function): Pass 0 to eval_string to avoid diff -r 973f585cfdf2 -r e320928eeb3a src/version.h --- a/src/version.h Fri Jan 22 10:21:33 2010 +0100 +++ b/src/version.h Fri Jan 22 12:43:12 2010 +0100 @@ -25,11 +25,11 @@ #if !defined (octave_version_h) #define octave_version_h 1 -#define OCTAVE_VERSION "3.2.3" +#define OCTAVE_VERSION "3.2.4" #define OCTAVE_API_VERSION "api-v37" -#define OCTAVE_RELEASE_DATE "2009-09-18" +#define OCTAVE_RELEASE_DATE "2010-01-22" #define OCTAVE_COPYRIGHT "Copyright (C) 2009 John W. Eaton and others." diff -r 973f585cfdf2 -r e320928eeb3a test/ChangeLog --- a/test/ChangeLog Fri Jan 22 10:21:33 2010 +0100 +++ b/test/ChangeLog Fri Jan 22 12:43:12 2010 +0100 @@ -1,3 +1,7 @@ +2010-01-22 Jaroslav Hajek + + Version 3.2.4 released. + 2009-09-18 Jaroslav Hajek Version 3.2.3 released.