GNU Octave Version 2
Summary of important uservisible changes
News for version 5 4.4 4.2 4 3.8 3.6 3.4 3.2 3 2 1 (Release History)
Version 2.0.17
 This will probably be the last release in the 2.0.x series. There are a few bug fixes, but the major change is to print a message saying that Octave 2.0.x cannot be compiled with gcc 3.0.x or gcc 2.96. If you want to build Octave 2.0.x, you will need to use gcc 2.95.x. If you want to use gcc 3.0.x or some later version, you should be using the Octave 2.1.35 sources or a more recent version.
Version 2.0.16
 This is primarily a bugfixing release.
Version 2.0.15

This is primarily a bugfixing release.

If you are using GNU Emacs 19.34 or earlier, you will need to add the following code to your
~/.emacs
file in order to use Emacs Octave mode:;; Set up the custom library. ;; taken from http://www.dina.kvl.dk/~abraham/custom/ (evalandcompile (conditioncase () (require 'custom) (error nil)) (if (and (featurep 'custom) (fboundp 'customdeclarevariable)) nil ;; We've got what we needed ;; We have the old customlibrary, hack around it! (defmacro defgroup (&rest args) nil) (defmacro defcustom (var value doc &rest args) (` (defvar (, var) (, value) (, doc))))))
Version 2.0.14
This release fixes numerous bugs and adds the following new features:
 argv is now padded with blanks instead of ASCII NUL.
 New functions:
 besselh Hankel functions of the first and second kind
 airy Airy functions of the first and second kind, and their derivatives
 The Bessel functions now accept complex values for the argument and any real value for the order.
 The value of LOADPATH set by the environment variable OCTAVE_PATH, the p or path command line options, or on the command line is no longer modified to include the default path. Instead it is left as specified. Its default value is now ":", which tells Octave to search the default path, and the new builtin variable DEFAULT_LOADPATH contains the default list of directories to search.
 The function file_in_path no longer does any special processing of its PATH argument. To search LOADPATH for files, it is now generally better to use the new function file_in_loadpath.
 If fread is given a skip parameter, the skip is performed after the read instead of before (for compatibility with Matlab).
 The new builtin variable `crash_dumps_octave_core' controls whether Octave writes user variables to the file `octavecore' when it crashes or is killed by a signal. The default value is 1 (0 if you use traditional).
 If LOADPATH contains a doubled colon, the default path is inserted in its place. This is similar to the substitution that also takes place for leading or trailing colons in the LOADPATH.
 Loops of the form `for i = STRING ... endfor' are now allowed.
 It is now possible to set the iteration limit for lsode using lsode_options ("step limit", N).
 New functions:
 is_complex tell whether a value is complex
 isnumeric tell whether a value is a numeric object
 isfinite find finite elements of a matrix object
 rehash reinitialize the cache of directories in LOADPATH
 graw send a string to the gnuplot subprocess
 New functions from Kurt Hornik's Octaveci package:
 In finance (new directory):
 fv
 future value of an investment
 fvl
 future value of an initial lump sum investment
 irr
 internal rate of return of an investment
 nper
 number of payments needed for amortizing a loan
 npv
 net present value of a series of payments
 pmt
 amount of periodic payment needed to amortize a loan
 pv
 present value of an investment
 pvl
 present value of an investment that pays off at the end
 rate
 rate of return of an investment
 vol
 volatility of financial time series data
 In linearalgebra:
 dmult
 rescale the rows of a matrix
 In signal:
 arch_fit
 fit an ARCH regression model
 arch_rnd
 simulate an ARCH process
 arch_test
 test for conditional heteroscedascity
 arma_rnd
 simulate an ARMA process
 autocor
 compute autocorrelations
 autocov
 compute autocovariances
 autoreg_matrix
 design matrix for autoregressions
 bartlett
 coefficients of the Bartlett (triangular) window
 blackman
 coefficients of the Blackman window
 diffpara
 estimate the fractional differencing parameter
 durbinlevinson
 perform one step of the DurbinLevinson algorithm
 fractdiff
 compute fractional differences
 hamming
 coefficients of the Hamming window
 hanning
 coefficients of the Hanning window
 hurst
 estimate the Hurst parameter
 periodogram
 compute the periodogram
 rectangle_lw
 rectangular lag window
 rectangle_sw
 rectangular spectral window
 sinetone
 compute a sine tone
 sinewave
 compute a sine wave
 spectral_adf
 spectral density estimation
 spectral_xdf
 spectral density estimation
 spencer
 apply Spencer's 15point MA filter
 stft
 shortterm Fourier transform
 synthesis
 recover a signal from its shortterm Fourier transform
 triangle_lw
 triangular lag window
 triangle_sw
 triangular spectral window
 yulewalker
 fit AR model by YuleWalker method
 In statistics/base (new directory):
 center
 center by subtracting means
 cloglog
 complementary loglog function
 cor
 compute correlations
 cov
 compute covariances
 cut
 cut data into intervals
 iqr
 interquartile range
 kendall
 kendall's rank correlation tau
 logit
 logit transformation
 mean
 compute arithmetic, geometric, and harmonic mean
 meansq
 compute mean square
 moment
 compute moments
 ppplot
 perform a PPplot (probability plot)
 probit
 probit transformation
 qqplot
 perform a QQplot (quantile plot)
 range
 compute range
 ranks
 compute ranks
 run_count
 count upward runs
 spearman
 spearman's rank correlation rho
 statistics
 compute basic statistics
 studentize
 subtract mean and divide by standard deviation
 table
 cross tabulation
 values
 extract unique elements
 var
 compute variance
 In statistics/distributions (new directory):
 beta_cdf
 CDF of the Beta distribution
 beta_inv
 Quantile function of the Beta distribution
 beta_pdf
 PDF of the Beta distribution
 beta_rnd
 Random deviates from the Beta distribution
 binomial_cdf
 CDF of the binomial distribution
 binomial_inv
 Quantile function of the binomial distribution
 binomial_pdf
 PDF of the binomial distribution
 binomial_rnd
 Random deviates from the binomial distribution
 cauchy_cdf
 CDF of the Cauchy distribution
 cauchy_inv
 Quantile function of the Cauchy distribution
 cauchy_pdf
 PDF of the Cauchy distribution
 cauchy_rnd
 Random deviates from the Cauchy distribution
 chisquare_cdf
 CDF of the chisquare distribution
 chisquare_inv
 Quantile function of the chisquare distribution
 chisquare_pdf
 PDF of the chisqaure distribution
 chisquare_rnd
 Random deviates from the chisquare distribution
 discrete_cdf
 CDF of a discrete distribution
 discrete_inv
 Quantile function of a discrete distribution
 discrete_pdf
 PDF of a discrete distribution
 discrete_rnd
 Random deviates from a discrete distribution
 empirical_cdf
 CDF of the empirical distribution
 empirical_inv
 Quantile function of the empirical distribution
 empirical_pdf
 PDF of the empirical distribution
 empirical_rnd
 Bootstrap samples from the empirical distribution
 exponential_cdf
 CDF of the exponential distribution
 exponential_inv
 Quantile function of the exponential distribution
 exponential_pdf
 PDF of the exponential distribution
 exponential_rnd
 Random deviates from the exponential distribution
 f_cdf
 CDF of the F distribution
 f_inv
 Quantile function of the F distribution
 f_pdf
 PDF of the F distribution
 f_rnd
 Random deviates from the F distribution
 gamma_cdf
 CDF of the Gamma distribution
 gamma_inv
 Quantile function of the Gamma distribution
 gamma_pdf
 PDF of the Gamma distribution
 gamma_rnd
 Random deviates from the Gamma distribution
 geometric_cdf
 CDF of the geometric distribution
 geometric_inv
 Quantile function of the geometric distribution
 geometric_pdf
 PDF of the geometric distribution
 geometric_rnd
 Random deviates from the geometric distribution
 hypergeometric_cdf
 CDF of the hypergeometric distribution
 hypergeometric_inv
 Random deviates from hypergeometric distribution
 hypergeometric_pdf
 PDF of the hypergeometric distribution
 hypergeometric_rnd
 Random deviates from hypergeometric distribution
 kolmogorov_smirnov_cdf
 CDF of the KolmogorovSmirnov distribution
 laplace_cdf
 CDF of the Laplace distribution
 laplace_inv
 Quantile function of the Laplace distribution
 laplace_pdf
 PDF of the Laplace distribution
 laplace_rnd
 Random deviates from the Laplace distribution
 logistic_cdf
 CDF of the logistic distribution
 logistic_inv
 Quantile function of the logistic distribution
 logistic_pdf
 PDF of the logistic distribution
 logistic_rnd
 Random deviates from the logistic distribution
 lognormal_cdf
 CDF of the log normal distribution
 lognormal_inv
 Quantile function of the log normal distribution
 lognormal_pdf
 PDF of the log normal distribution
 lognormal_rnd
 Random deviates from the log normal distribution
 normal_cdf
 CDF of the normal distribution
 normal_inv
 Quantile function of the normal distribution
 normal_pdf
 PDF of the normal distribution
 normal_rnd
 Random deviates from the normal distribution
 pascal_cdf
 CDF of the Pascal (negative binomial) distribution
 pascal_inv
 Quantile function of the Pascal distribution
 pascal_pdf
 PDF of the Pascal (negative binomial) distribution
 pascal_rnd
 Random deviates from the Pascal distribution
 poisson_cdf
 CDF of the Poisson distribution
 poisson_inv
 Quantile function of the Poisson distribution
 poisson_pdf
 PDF of the Poisson distribution
 poisson_rnd
 Random deviates from the Poisson distribution
 stdnormal_cdf
 CDF of the standard normal distribution
 stdnormal_inv
 Quantile function of standard normal distribution
 stdnormal_pdf
 PDF of the standard normal distribution
 stdnormal_rnd
 Random deviates from standard normal distribution
 t_cdf
 CDF of the t distribution
 t_inv
 Quantile function of the t distribution
 t_pdf
 PDF of the t distribution
 t_rnd
 Random deviates from the t distribution
 uniform_cdf
 CDF of the uniform distribution
 uniform_inv
 Quantile function of the uniform distribution
 uniform_pdf
 PDF of the uniform distribution
 uniform_rnd
 Random deviates from the uniform distribution
 weibull_cdf
 CDF of the Weibull distribution
 weibull_inv
 Quantile function of the Weibull distribution
 weibull_pdf
 PDF of the Weibull distribution
 weibull_rnd
 Random deviates from the Weibull distribution
 wiener_rnd
 Simulate a Wiener process
 In statistics/models (new directory):
 logistic_regression
 ordinal logistic regression
 logistic_regression_derivatives
 derivates of loglikelihood in logistic regression
 logistic_regression_likelihood
 likelihood in logistic regression
 In statistics/tests (new directory):
 anova
 oneway analysis of variance
 bartlett_test
 bartlett test for homogeneity of variances
 chisquare_test_homogeneity
 chisquare test for homogeneity
 chisquare_test_independence
 chisquare test for independence
 cor_test
 test for zero correlation
 f_test_regression
 test linear hypotheses in linear regression model
 hotelling_test
 test for mean of a multivariate normal
 hotelling_test_2
 compare means of two multivariate normals
 kolmogorov_smirnov_test
 onesample KolmogorovSmirnov test
 kolmogorov_smirnov_test_2
 twosample KolmogorovSmirnov test
 kruskal_wallis_test
 kruskalWallis test
 manova
 oneway multivariate analysis of variance
 mcnemar_test
 mcnemar's test for symmetry
 prop_test_2
 compare two proportions
 run_test
 run test for independence
 sign_test
 sign test
 t_test
 student's onesample t test
 t_test_2
 student's twosample t test
 t_test_regression
 test one linear hypothesis in linear regression model
 u_test
 mannWhitney Utest
 var_test
 f test to compare two variances
 welch_test
 welch twosample t test
 wilcoxon_test
 wilcoxon signedrank test
 z_test
 test for mean of a normal sample with known variance
 z_test_2
 compare means of two normal samples with known variances
 In finance (new directory):
 The save command now accepts the option append to save the variables at the end of the file, leaving the existing contents.
 New commandline option nohistory (also available using the single character option H) inhibits saving command history.
 The mkoctfile script now accepts DDEF options and passes them on to the C and C++ compilers.
Version 2.0.13
 This is a bugfixing release. There are no new uservisible features.
Version 2.0.12
 Tilde expansion is once again performed on the directories listed in the LOADPATH variable.
 gplot now supports the `axes' qualifier that is new with gnuplot 3.6beta.
 Timestamps on .m and .oct files are now only checked if a prompt has been printed since the last timestamp check.
 Octave now prints a warning if a .m or .oct file has a time stamp in the future.
 For matrices, x(:) now works no matter what the value of do_fortran_indexing is.
 New keywords __FILE__ and __LINE__ expand to the name of the file that is being read and the current input line number, respectively.
 The GNU Info reader is no longer distributed with Octave because current releases of GNU Info now support all the features needed by Octave. If your copy of GNU Info doesn't support the indexsearch option, you should install a newer version of GNU Info, which is distributed as part of the GNU Texinfo package.
 Running `make check' should work now before you run `make install', even if you build a copy of Octave that depends on shared versions of the Octave libraries.
 Octave now uses kpathsea 3.2.
 The new builtin variable `kluge_procbuf_delay' specifies the number of microseconds to delay in the parent process after forking. By default on gnuwin32 systems, it's set to 500000 (1/2 second). On other systems, the default value is 0. Delaying for a short time in the parent after forking seems to avoid problems in which communicating with subprocesses via pipes would sometimes cause Octave to hang. I doubt that the delay is really the right solution. If anyone has a better idea, I'd love to hear it.
Version 2.0.11
 There are two new builtin variables that control how global
variables are initialized. If
initialize_global_variables
is nonzero, global variables are initialized to the value of the variabledefault_global_variable_value
. The default value ofinitialize_global_variables
is 0 (1 if you usetraditional
) anddefault_global_variable_value
is undefined (the empty matrix if you usetraditional
). The default settings are compatible with versions of Octave before 2.0.10.
Version 2.0.10
 The builtin 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 ofA'*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 addglobal __disable_lyap_interface_change_warning__;
to your ~/.octaverc file. The warning will eventually disappear for good in some future version of Octave.  New builtin functions for computing Bessel functions: besseli, besselj, besselk, and bessely.
 The gammai and betai functions are now implemented as builtin functions rather than function files.
 The new builtin 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 builtin variable `fixed_point_format' controls whether Octave uses a scaled fixedpoint 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 builtin 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 builtin 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.
Version 2.0.9
 This is a bugfixing release, but there is one new uservisible 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)'
Version 2.0.8
This is a bugfixing release. There are only a few new uservisible 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.
Version 2.0.7
 This is a bugfixing release. There are no new uservisible features.
Version 2.0.6
This is primarily a bugfixing release. There are only a few new uservisilbe features.
 The new builtin 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 builtin constant OCTAVE_HOME specifies the toplevel directory where Octave is installed.
 Octave no longer includes functions to work with NPSOL or QPSOL, because they are not free software.
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.
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")).
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 printsx = 0 1
but an assignment likez = 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.
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
Version 2.0.1
 Other than bug fixes, there were no uservisible changes in version 2.0.1.
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 GNUWIN32 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 enableshared. You may also need to have a sharedlibrary 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 enableboundscheck 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 disableboundscheck.
 The Cstyle 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 builtin 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.</li>
 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.
 Builtin 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 builtin variables `history_file', `history_size', and `saving_history'.
 New builtin variable `string_fill_char' specifies the character to fill with when creating arrays of strings.
 If the new builtin 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 builtin 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 builtin 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 outofmemory errors.
 If Octave crashes, it now attempts to save all userdefined variables in a file named `octavecore' 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 builtin function.
 New function randn() returns a pseudorandom number from a normal distribution. The rand() and randn() functions have separate seeds and generators.
 Octave's commandline arguments are now available in the builtin 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 builtin variable `completion_append_char' used as the character to append to successful commandline 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 builtin 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 commandline argument traditional sets the following
preference variables for compatibility with Matlab:
PS1 = ">> " PS2 = "" beep_on_error = 1 default_save_format = "matbinary" 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 mulaw encoding
 loadaudio
 load an audio file to a vector
 mu2lin
 mulaw 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 multipleplot 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 zaxis
 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 builtin 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 2way 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 Mfiles using these basic functions.</li>
 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 passwordfile stream, opening if necessary
 getpwuid
 search for password entry with matching user ID
 getpwnam
 search for password entry with matching username
 setpwent
 rewind the passwordfile stream
 endpwent
 close the passwordfile stream
 Functions for getting info from the group database on Unix systems:
 getgrent
 read entry from groupfile 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 pgroupfile stream
 endgrent
 close the groupfile 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 Mfile 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 commandline arguments that are not yet available in the public release of Info.
 There is a new builtin 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 infoprogram NAME, or by setting the value of INFO_PROGRAM in a startup script.
 There is a new builtin 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 execpath 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 `lsR' database file to speed up recursive path searching. Octave looks for a file called lsR 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. </ul>