Mercurial > hg > octave-nkf
changeset 2590:c6cbc2041469
[project @ 1996-12-14 00:24:47 by jwe]
author | jwe |
---|---|
date | Sat, 14 Dec 1996 00:24:47 +0000 |
parents | 49ae0d992eea |
children | 140fd45c1b84 |
files | WWW/NEWS-1.html WWW/NEWS-2.html |
diffstat | 2 files changed, 2089 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
new file mode 100644 --- /dev/null +++ b/WWW/NEWS-1.html @@ -0,0 +1,1644 @@ +<!doctype html public "-//IETF//DTD HTML Strict//EN"> +<html> +<head> +<title> Changes in Octave version 1 </title> +</head> + +<body> +<h1> News for Octave Version 1 </h1> +<hr> + +<h2>Summary of changes for version 1.1.1</h2> + +<pre> + * 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. +</pre> + +<h2>Summary of changes for version 1.1.0</h2> + +<pre> + * 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 = + + <structure: a b c> + + 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 = + + <structure: d> + + 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 = + + <structure: im re> + + 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 = + + <structure: s u v> + + 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. +</pre> + +<h2>Summary of changes for version 1.0</h2> + +<pre> + * C-style I/O functions now handle files referenced by name or by + number more consistently. +</pre> + +<h2>Summary of changes for version 0.83</h2> + +<pre> + * Loading global symbols should work now. + + * Clearing the screen doesn't reprint the prompt unnecessarily. + + * The operations <complex scalar> OP <real matrix> for OP == +, -, + *, or ./ no longer crash Octave. + + * More portability and configuration fixes. +</pre> + +<h2>Summary of changes for version 0.82</h2> + +<pre> + * 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. +</pre> + +<h2>Summary of changes for version 0.81</h2> + +<pre> + * 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. +</pre> + +<h2>Summary of changes for version 0.80</h2> + +<pre> + * I have started working on a manual for the C++ classes. At this + point, it is little more than a list of function names. If you + would like to volunteer to help work on this, please contact + bug-octave@bevo.che.wisc.edu. + + * The patterns accepted by the save and clear commands now work like + file name globbing patterns instead of regular expressions. I + apologize for any inconvenience this change may cause, but file + name globbing seems like a more reasonable style of pattern + matching for this purpose. + + * It is now possible to specify tolerances and other optional inputs + for dassl, fsolve, lsode, npsol, qpsol, and quad. For each of + these functions, there is a corresponding function X_options, + which takes a keyword and value arguments. If invoked without any + arguments, the X_options functions print a list of possible + keywords and current values. For example, + + npsol_options () + + prints a list of possible options with values, and + + npsol_options ("major print level", 10) + + sets the major print level to 10. + + The keyword match is not case sensitive, and the keywords may be + abbreviated to the shortest unique match. For example, + + npsol_options ("ma p", 10) + + is equivalent to the statement shown above. + + * The new built-in variable save_precision can be used to set the + number of digits preserved by the ASCII save command. + + * Assignment of [] now works in most cases to allow you to delete + rows or columns of matrices and vectors. For example, given a + 4x5 matrix A, the assignment + + A (3, :) = [] + + deletes the third row of A, and the assignment + + A (:, 1:2:5) = [] + + deletes the first, third, and fifth columns. + + * Variable argument lists. Octave now has a real mechanism for + handling functions that take an unspecified number of arguments, + so it is no longer necessary to place an upper bound on the number + of optional arguments that a function can accept. + + Here is an example of a function that uses the new syntax to print + a header followed by an unspecified number of values: + + function foo (heading, ...) + disp (heading); + va_start (); + while (--nargin) + disp (va_arg ()); + endwhile + endfunction + + Note that the argument list must contain at least one named + argument (this restriction may eventually be removed), and the + ellipsis must appear as the last element of the argument list. + + Calling va_start() positions an internal pointer to the first + unnamed argument and allows you to cycle through the arguments + more than once. It is not necessary to call va_start() if you + do not plan to cycle through the arguments more than once. + + * Recursive functions should work now. + + * The environment variable OCTAVE_PATH is now handled in the same + way as TeX handles TEXINPUTS. If the path starts with `:', the + standard path is prepended to the value obtained from the + environment. If it ends with `:' the standard path is appended to + the value obtained from the environment. + + * New functions, from Kurt Hornik (hornik@neuro.tuwien.ac.at) and + the Department of Probability Theory and Statistics TU Wien, + Austria: + + corrcoef -- corrcoef (X, Y) is the correlation between the i-th + variable in X and the j-th variable in Y + corrcoef (X) is corrcoef (X, X) + cov -- cov (X, Y) is the covariance between the i-th + variable in X and the j-th variable in Y + cov (X) is cov (X, X) + gls -- generalized least squares estimation + kurtosis -- kurtosis(x) = N^(-1) std(x)^(-4) SUM_i (x(i)-mean(x))^4 - 3 + If x is a matrix, return the row vector containing + the kurtosis of each column + mahalanobis -- returns Mahalanobis' D-square distance between the + multivariate samples X and Y, which must have the + same number of components (columns), but may have + a different number of observations (rows) + ols -- ordinary least squares estimation + pinv -- returns the pseudoinverse of X; singular values + less than tol are ignored + skewness -- skewness (x) = N^(-1) std(x)^(-3) SUM_i (x(i)-mean(x))^3 + if x is a matrix, return the row vector containing + the skewness of each column + + * Errors in user-supplied functions called from dassl, fsolve, + lsode, npsol, and quad are handled more gracefully. + + * Programming errors in the use of the C++ classes within Octave + should no longer cause Octave to abort. Instead, Octave's error + handler function is called and execution continues as best as is + possible. This should result in eventually returning control to + the top-level Octave prompt. (It would be nice to have a real + exception handling mechanism...) + + * A number of memory leaks have been eliminated. Thanks to + Fong Kin Fui <fui@ee.nus.sg> 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. +</pre> + +<h2>Summary of changes for version 0.79</h2> + +<pre> + * 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. +</pre> + +<h2>Summary of changes for version 0.78</h2> + +<pre> + * 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. +</pre> + +<h2>Summary of changes for version 0.77</h2> + +<pre> + * 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. +</pre> + +<h2>Summary of changes for version 0.76</h2> + +<pre> + * Better run-time error messages. Many now include line and column + information indicating where the error occurred. Octave will also + print a traceback for errors occurring inside functions. If you + find error messages that could use improvement, or errors that + Octave fails to catch, please send a bug report to + bug-octave@bevo.che.wisc.edu. + + * If gplot (or gsplot) is given a string to plot, and the string + does not name a file, Octave will pass the string along to gnuplot + directly. This allows commands like + + gplot "sin (x)" w l, data w p + + to work (assuming that data is a variable containing a matrix of + values). + + * Long options (--help, --version, etc.) are supported. +</pre> + +<h2>Summary of changes for version 0.75</h2> + +<pre> + * 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]. +</pre> + +<h2>Summary of changes for version 0.74</h2> + +<pre> + * 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. +</pre> + +<h2>Summary of changes for version 0.73</h2> + +<pre> + * 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. +</pre> + +<h2>Summary of changes for version 0.72</h2> + +<pre> + * 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. + +</pre> + +<h2>Summary of changes for version 0.71</h2> + +<pre> + * 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. +</pre> + +<h2>Summary of changes for version 0.70</h2> + +<pre> + * 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. +</pre> + +<h2>Summary of changes for version 0.69</h2> + +<pre> + * 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. +</pre> + +<h2>Summary of changes for version 0.68</h2> + +<pre> + * New functions: + + eval -- evaluate a string as a sequence of Octave commands. + input -- print a prompt and get user input. +</pre> + +<h2>Summary of changes for version 0.67</h2> + +<pre> + * 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. +</pre> + +<h2>Summary of changes for version 0.66</h2> + +<pre> + * 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. +</pre> + +<h2>Summary of changes for version 0.63</h2> + +<pre> + * 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. +</pre> + +<h2>Summary of changes for version 0.61</h2> + +<pre> + * 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). +</pre> + +<h2>Summary of changes for version 0.57</h2> + +<pre> + * The C-like formatted print functions printf, fprintf, and sprintf + finally work. +</pre> + +<h2>Summary of changes for version 0.56</h2> + +<pre> + * 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. +</pre> + +<h2>Summary of changes for version 0.55</h2> + +<pre> + * 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'. +</pre> + +<h2>Summary of changes for version 0.52</h2> + +<pre> + * 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. +</pre> + +<h2>Summary of changes for version 0.51</h2> + +<pre> + * Major overhaul of array indexing. + + * The colloc function actually works now. +</pre> + +<h2>Summary of changes for version 0.50</h2> + +<pre> + * 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. +</pre> + +</body> +</html>
new file mode 100644 --- /dev/null +++ b/WWW/NEWS-2.html @@ -0,0 +1,445 @@ +<!doctype html public "-//IETF//DTD HTML Strict//EN"> +<html> +<head> +<title> Changes in Octave version 2 </title> +</head> + +<body> +<h1> News for Octave Version 2 </h1> +<hr> + +<h2>Summary of changes for version 2.0</h2> + +<pre> + * 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 + <Andreas.Weingessel@ci.tuwien.ac.at>. + + 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 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. +</pre> + +</body> +</html>