home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / octa21fs.zip / octave / NEWS < prev    next >
Lisp/Scheme  |  2000-01-15  |  44KB  |  1,033 lines

  1. Summary of changes for version 2.1.x:
  2. ------------------------------------
  3.  
  4.   * If you are using GNU Emacs 19.34 or earlier, you will need to add
  5.     the following code to your ~/.emacs file in order to use Emacs
  6.     Octave mode:
  7.  
  8.       ;; Set up the custom library.
  9.       ;; taken from http://www.dina.kvl.dk/~abraham/custom/
  10.       (eval-and-compile
  11.     (condition-case ()
  12.         (require 'custom)
  13.       (error nil))
  14.     (if (and (featurep 'custom) (fboundp 'custom-declare-variable))
  15.         nil ;; We've got what we needed
  16.       ;; We have the old custom-library, hack around it!
  17.       (defmacro defgroup (&rest args)
  18.         nil)
  19.       (defmacro defcustom (var value doc &rest args) 
  20.         (` (defvar (, var) (, value) (, doc))))))
  21.  
  22.   * When `format +' is in effect, Octave uses the following symbols to
  23.     provide more information about the values in a matrix:
  24.  
  25.       +      postive real
  26.       -      negative real
  27.       i      pure imaginary
  28.       c      complex
  29.       blank  zero
  30.  
  31.   * The ++ and -- operators now work for indexed matrices, and the
  32.     following operators now work:
  33.  
  34.       +=, -=, *=, /=, \=, <<=, >>=, .*=, ./=, .\=, &=, |=
  35.  
  36.     These operators are currently implemented using a relatively
  37.     inefficient brute-force method but hey, they work.
  38.  
  39.   * The built-in variable argv is now a list of strings instead of a
  40.     string vector.
  41.  
  42.   * The value of LOADPATH set by the environment variable
  43.     OCTAVE_PATH, the -p or --path command line options, or on the
  44.     command line is no longer modified to include the default path.
  45.     Instead it is left as specified.  Its default value is now ":",
  46.     which tells Octave to search the default path, and the new
  47.     built-in variable DEFAULT_LOADPATH contains the default list of
  48.     directories to search.  
  49.  
  50.   * The function file_in_path no longer does any special processing of
  51.     its PATH argument.  To search LOADPATH for files, it is now
  52.     generally better to use the new function file_in_loadpath.
  53.  
  54.   * If fread is given a skip parameter, the skip is performed after
  55.     the read instead of before (for compatibility with Matlab).
  56.  
  57.   * The new built-in variable `crash_dumps_octave_core' controls
  58.     whether Octave writes user variables to the file `octave-core'
  59.     when it crashes or is killed by a signal.  The default value is 1
  60.     (0 if you use --traditional).
  61.  
  62.   * If LOADPATH contains a doubled colon, the default path is inserted
  63.     in its place.  This is similar to the substitution that also takes
  64.     place for leading or trailing colons in the LOADPATH.
  65.  
  66.   * Loops of the form `for i = STRING ... endfor' are now allowed.
  67.  
  68.   * It is now possible to set the iteration limit for lsode using
  69.     lsode_options ("step limit", N).
  70.  
  71.   * New functions:
  72.  
  73.       is_complex  -- tell whether a variable is complex
  74.       rehash      -- re-initialize the cache of directories in LOADPATH
  75.       graw        -- send a string to the gnuplot subprocess
  76.  
  77.   * New functions from Kurt Hornik's Octave-ci package:
  78.  
  79.     In finance (new directory):
  80.  
  81.       fv    -- future value of an investment
  82.       fvl   -- future value of an initial lump sum investment
  83.       irr   -- internal rate of return of an investment
  84.       nper  -- number of payments needed for amortizing a loan
  85.       npv   -- net present value of a series of payments
  86.       pmt   -- amount of periodic payment needed to amortize a loan
  87.       pv    -- present value of an investment
  88.       pvl   -- present value of an investment that pays off at the end
  89.       rate  -- rate of return of an investment
  90.       vol   -- volatility of financial time series data
  91.  
  92.     In linear-algebra:
  93.  
  94.       dmult -- rescale the rows of a matrix
  95.  
  96.     In signal:
  97.  
  98.       arch_fit       -- fit an ARCH regression model
  99.       arch_rnd       -- simulate an ARCH process
  100.       arch_test      -- test for conditional heteroscedascity
  101.       arma_rnd       -- simulate an ARMA process
  102.       autocor        -- compute autocorrelations
  103.       autocov        -- compute autocovariances
  104.       autoreg_matrix -- design matrix for autoregressions
  105.       bartlett       -- coefficients of the Bartlett (triangular) window
  106.       blackman       -- coefficients of the Blackman window
  107.       diffpara       -- estimate the fractional differencing parameter
  108.       durbinlevinson -- perform one step of the Durbin-Levinson algorithm
  109.       fractdiff      -- compute fractional differences
  110.       hamming        -- coefficients of the Hamming window
  111.       hanning        -- coefficients of the Hanning window
  112.       hurst          -- estimate the Hurst parameter
  113.       periodogram    -- compute the periodogram
  114.       rectangle_lw   -- rectangular lag window
  115.       rectangle_sw   -- rectangular spectral window
  116.       sinetone       -- compute a sine tone
  117.       sinewave       -- compute a sine wave
  118.       spectral_adf   -- spectral density estimation
  119.       spectral_xdf   -- spectral density estimation
  120.       spencer        -- apply Spencer's 15-point MA filter
  121.       stft           -- short-term Fourier transform
  122.       synthesis      -- recover a signal from its short-term Fourier transform
  123.       triangle_lw    -- triangular lag window
  124.       triangle_sw    -- triangular spectral window
  125.       yulewalker     -- fit AR model by Yule-Walker method
  126.  
  127.     In statistics/base (new directory):
  128.  
  129.       center     -- center by subtracting means
  130.       cloglog    -- complementary log-log function
  131.       cor        -- compute correlations
  132.       cov        -- compute covariances
  133.       cut        -- cut data into intervals
  134.       iqr        -- interquartile range
  135.       kendall    -- kendall's rank correlation tau
  136.       logit      -- logit transformation
  137.       mean       -- compute arithmetic, geometric, and harmonic mean
  138.       meansq     -- compute mean square
  139.       moment     -- compute moments
  140.       ppplot     -- perform a PP-plot (probability plot)
  141.       probit     -- probit transformation
  142.       qqplot     -- perform a QQ-plot (quantile plot)
  143.       range      -- compute range
  144.       ranks      -- compute ranks
  145.       run_count  -- count upward runs
  146.       spearman   -- spearman's rank correlation rho
  147.       statistics -- compute basic statistics
  148.       studentize -- subtract mean and divide by standard deviation
  149.       table      -- cross tabulation
  150.       values     -- extract unique elements
  151.       var        -- compute variance
  152.  
  153.     In statistics/distributions (new directory):
  154.  
  155.       beta_cdf           -- CDF of the Beta distribution
  156.       beta_inv           -- Quantile function of the Beta distribution
  157.       beta_pdf           -- PDF of the Beta distribution
  158.       beta_rnd           -- Random deviates from the Beta distribution
  159.  
  160.       binomial_cdf       -- CDF of the binomial distribution
  161.       binomial_inv       -- Quantile function of the binomial distribution
  162.       binomial_pdf       -- PDF of the binomial distribution
  163.       binomial_rnd       -- Random deviates from the binomial distribution
  164.  
  165.       cauchy_cdf         -- CDF of the Cauchy distribution
  166.       cauchy_inv         -- Quantile function of the Cauchy distribution
  167.       cauchy_pdf         -- PDF of the Cauchy distribution
  168.       cauchy_rnd         -- Random deviates from the Cauchy distribution
  169.  
  170.       chisquare_cdf      -- CDF of the chi-square distribution
  171.       chisquare_inv      -- Quantile function of the chi-square distribution
  172.       chisquare_pdf      -- PDF of the chi-sqaure distribution
  173.       chisquare_rnd      -- Random deviates from the chi-square distribution
  174.  
  175.       discrete_cdf       -- CDF of a discrete distribution
  176.       discrete_inv       -- Quantile function of a discrete distribution
  177.       discrete_pdf       -- PDF of a discrete distribution
  178.       discrete_rnd       -- Random deviates from a discrete distribution
  179.  
  180.       empirical_cdf      -- CDF of the empirical distribution
  181.       empirical_inv      -- Quantile function of the empirical distribution
  182.       empirical_pdf      -- PDF of the empirical distribution
  183.       empirical_rnd      -- Bootstrap samples from the empirical distribution
  184.  
  185.       exponential_cdf    -- CDF of the exponential distribution
  186.       exponential_inv    -- Quantile function of the exponential distribution
  187.       exponential_pdf    -- PDF of the exponential distribution
  188.       exponential_rnd    -- Random deviates from the exponential distribution
  189.  
  190.       f_cdf              -- CDF of the F distribution
  191.       f_inv              -- Quantile function of the F distribution
  192.       f_pdf              -- PDF of the F distribution
  193.       f_rnd              -- Random deviates from the F distribution
  194.  
  195.       gamma_cdf          -- CDF of the Gamma distribution
  196.       gamma_inv          -- Quantile function of the Gamma distribution
  197.       gamma_pdf          -- PDF of the Gamma distribution
  198.       gamma_rnd          -- Random deviates from the Gamma distribution
  199.  
  200.       geometric_cdf      -- CDF of the geometric distribution
  201.       geometric_inv      -- Quantile function of the geometric distribution
  202.       geometric_pdf      -- PDF of the geometric distribution
  203.       geometric_rnd      -- Random deviates from the geometric distribution
  204.  
  205.       hypergeometric_cdf -- CDF of the hypergeometric distribution
  206.       hypergeometric_inv -- Random deviates from hypergeometric distribution
  207.       hypergeometric_pdf -- PDF of the hypergeometric distribution
  208.       hypergeometric_rnd -- Random deviates from hypergeometric distribution
  209.  
  210.       kolmogorov_smirnov_cdf -- CDF of the Kolmogorov-Smirnov distribution
  211.  
  212.       laplace_cdf        -- CDF of the Laplace distribution
  213.       laplace_inv        -- Quantile function of the Laplace distribution
  214.       laplace_pdf        -- PDF of the Laplace distribution
  215.       laplace_rnd        -- Random deviates from the Laplace distribution
  216.  
  217.       logistic_cdf       -- CDF of the logistic distribution
  218.       logistic_inv       -- Quantile function of the logistic distribution
  219.       logistic_pdf       -- PDF of the logistic distribution
  220.       logistic_rnd       -- Random deviates from the logistic distribution
  221.  
  222.       lognormal_cdf      -- CDF of the log normal distribution
  223.       lognormal_inv      -- Quantile function of the log normal distribution
  224.       lognormal_pdf      -- PDF of the log normal distribution
  225.       lognormal_rnd      -- Random deviates from the log normal distribution
  226.  
  227.       normal_cdf         -- CDF of the normal distribution
  228.       normal_inv         -- Quantile function of the normal distribution
  229.       normal_pdf         -- PDF of the normal distribution
  230.       normal_rnd         -- Random deviates from the normal distribution
  231.  
  232.       pascal_cdf         -- CDF of the Pascal (negative binomial) distribution
  233.       pascal_inv         -- Quantile function of the Pascal distribution
  234.       pascal_pdf         -- PDF of the Pascal (negative binomial) distribution
  235.       pascal_rnd         -- Random deviates from the Pascal distribution
  236.  
  237.       poisson_cdf        -- CDF of the Poisson distribution
  238.       poisson_inv        -- Quantile function of the Poisson distribution
  239.       poisson_pdf        -- PDF of the Poisson distribution
  240.       poisson_rnd        -- Random deviates from the Poisson distribution
  241.  
  242.       stdnormal_cdf      -- CDF of the standard normal distribution
  243.       stdnormal_inv      -- Quantile function of standard normal distribution
  244.       stdnormal_pdf      -- PDF of the standard normal distribution
  245.       stdnormal_rnd      -- Random deviates from standard normal distribution
  246.  
  247.       t_cdf              -- CDF of the t distribution
  248.       t_inv              -- Quantile function of the t distribution
  249.       t_pdf              -- PDF of the t distribution
  250.       t_rnd              -- Random deviates from the t distribution
  251.  
  252.       uniform_cdf        -- CDF of the uniform distribution
  253.       uniform_inv        -- Quantile function of the uniform distribution
  254.       uniform_pdf        -- PDF of the uniform distribution
  255.       uniform_rnd        -- Random deviates from the uniform distribution
  256.  
  257.       weibull_cdf        -- CDF of the Weibull distribution
  258.       weibull_inv        -- Quantile function of the Weibull distribution
  259.       weibull_pdf        -- PDF of the Weibull distribution
  260.       weibull_rnd        -- Random deviates from the Weibull distribution
  261.  
  262.       wiener_rnd         -- Simulate a Wiener process
  263.  
  264.     In statistics/models (new directory):
  265.  
  266.       logistic_regression             -- ordinal logistic regression
  267.       logistic_regression_derivatives -- derivates of log-likelihood
  268.                                          in logistic regression
  269.       logistic_regression_likelihood  -- likelihood in logistic regression
  270.  
  271.     In statistics/tests (new directory):
  272.  
  273.       anova                       -- one-way analysis of variance
  274.       bartlett_test               -- bartlett test for homogeneity of variances
  275.       chisquare_test_homogeneity  -- chi-square test for homogeneity
  276.       chisquare_test_independence -- chi-square test for independence
  277.       cor_test                    -- test for zero correlation
  278.       f_test_regression           -- test linear hypotheses in linear
  279.                                      regression model
  280.       hotelling_test              -- test for mean of a multivariate normal
  281.       hotelling_test_2            -- compare means of two multivariate normals
  282.       kolmogorov_smirnov_test     -- one-sample Kolmogorov-Smirnov test
  283.       kolmogorov_smirnov_test_2   -- two-sample Kolmogorov-Smirnov test
  284.       kruskal_wallis_test         -- kruskal-Wallis test
  285.       manova                      -- one-way multivariate analysis of variance
  286.       mcnemar_test                -- mcnemar's test for symmetry
  287.       prop_test_2                 -- compare two proportions
  288.       run_test                    -- run test for independence
  289.       sign_test                   -- sign test
  290.       t_test                      -- student's one-sample t test 
  291.       t_test_2                    -- student's two-sample t test
  292.       t_test_regression           -- test one linear hypothesis in linear
  293.                                      regression model
  294.       u_test                      -- mann-Whitney U-test
  295.       var_test                    -- f test to compare two variances
  296.       welch_test                  -- welch two-sample t test
  297.       wilcoxon_test               -- wilcoxon signed-rank test
  298.       z_test                      -- test for mean of a normal sample with
  299.                                      known variance
  300.       z_test_2                    -- compare means of two normal samples with
  301.                                      known variances
  302.  
  303.   * The save command now accepts the option -append to save the
  304.     variables at the end of the file, leaving the existing contents.
  305.  
  306.   * New command-line option --no-history (also available using the
  307.     single character option -H) inhibits saving command history.
  308.  
  309.   * The mkoctfile script now accepts -DDEF options and passes them on
  310.     to the C and C++ compilers.
  311.  
  312.   * Running `make check' should work now before you run `make install', 
  313.     even if you build a copy of Octave that depends on shared versions
  314.     of the Octave libraries.
  315.  
  316.   * For matrices, x(:) now works and returns a column vector no matter
  317.     what the value of do_fortran_indexing is.
  318.  
  319.   * New keywords __FILE__ and __LINE__ expand to the name of the file
  320.     that is being read and the current input line number, respectively.
  321.  
  322.   * Octave's expression parser is more general and consistent.  It is
  323.     now possible to access structure elements and index arbitrary
  324.     values.  For example, expressions like
  325.  
  326.       my_home_dir = getpwuid (getuid ()) . dir;
  327.  
  328.     and
  329.  
  330.       svd (x) (1:5)
  331.  
  332.     now work.
  333.  
  334.   * New built-in variable `print_rhs_assign_val' controls what is
  335.     printed when an assignment expression is evaluated.  If it is
  336.     zero, the value of the variable on the left hand side (after the
  337.     assignment) is printed.  If it is nonzero, the value of the right
  338.     hand side (i.e., the result of the expression) is printed.  The
  339.     default value of is zero, so the behavior is the same as in
  340.     previous versions of Octave.
  341.  
  342.   * tmpnam now takes two optional arguments, DIR, and PREFIX.  For
  343.     example, tmpnam ("/foo", "bar-") returns a file name like
  344.     "/foo/bar-10773baa".  If DIR is omitted or empty, the value of the
  345.     environment variable TMPDIR, or /tmp is used.  If PREFIX is 
  346.     omitted, "oct-" is used.
  347.  
  348.   * The built-in variable `PWD' has been removed.  If you need to get
  349.     the value of the current working directory, use the pwd() function
  350.     instead.
  351.  
  352.   * New operators.  Octave's parser now recognizes the following
  353.     operators:  << >> += -= *= /= .+= .-= .*= ./= &= |= <<= >>=.  So
  354.     far, there are only a few operations defined that actually use
  355.     them (this should change before 2.1 is released).
  356.  
  357.   * New built-in data types:
  358.  
  359.     logical:
  360.  
  361.       A true value is represented by 1, and false value by 0.
  362.       Comparison operations like <, <=, ==, >, >=, and != now return
  363.       logical values.  Indexing operations that use zero-one style
  364.       indexing must now use logical values.  You can use the new
  365.       function logical() to convert a numeric value to a logical
  366.       value.  This avoids the need for the built-in variable
  367.       `prefer_zero_one_indexing', so it has been removed.  Logical
  368.       values are automatically converted to numeric values where
  369.       appropriate.
  370.  
  371.     file:
  372.  
  373.       A file object represents an open Octave stream object.  The
  374.       fopen function now returns a file object instead of an integer.
  375.       File objects can be converted to integers automatically, and the
  376.       other functions that work with file ids still work with
  377.       integers, so this change should be backward compatible.
  378.  
  379.       The binary left-shift operator `<<' has been defined to work as
  380.       in C++ for file objects and built-in types.  For example,
  381.  
  382.         my_stream = fopen ("foo", "w");
  383.         my_stream << "x = " << pi << " marks the spot\n";
  384.  
  385.       writes `x = 3.1416 marks the spot' in the file foo.
  386.  
  387.       The built-in variables stdin, stdout, and stderr are now also
  388.       file objects instead of integers.
  389.  
  390.     list:
  391.  
  392.       A list is an array of Octave objects.  It can be indexed using
  393.       the normal indexing operator.  For example,
  394.  
  395.         x = list ([1,2;3,4], 1, "foo");
  396.         stdout << x(2) << "\n"
  397.         1
  398.         stdout << x;
  399.         (
  400.          [1] =
  401.         
  402.            1  2
  403.            3  4
  404.         
  405.           [2] = 1
  406.           [3] = foo
  407.         )
  408.  
  409.       There is currently no special syntax for creating lists; you
  410.       must use the list function.
  411.  
  412.   * Commas in global statements are no longer special.  They are now
  413.     treated as command separators.  This removes a conflict in the
  414.     grammar and is consistent with the way Matlab behaves.  The
  415.     variable `warn_comma_in_global_decl' has been eliminated.
  416.  
  417.   * It is now possible to declare static variables that retain their
  418.     values across function calls.  For example,
  419.  
  420.       function ncall = f () static n = 0; ncall = ++n; endfunction
  421.  
  422.     defines a function that returns the number of times that it has
  423.     been called.
  424.  
  425.   * Within user-defined functions, the new automatic variable `argn'
  426.     contains the names of the arguments that were passed to the
  427.     function.  For example,
  428.  
  429.       function f (...)
  430.         for i = 1:nargin
  431.           stdout << "argn(" << i << ") = `" << deblank (argn(i,:)) \
  432.                  << "' and its value is " << va_arg () << "\n";
  433.         endfor
  434.       endfunction
  435.       f (1+2, "foo", sin (pi/2))
  436.  
  437.     prints
  438.  
  439.       argn(1) = `1 + 2' and its value is 3
  440.       argn(2) = `"foo"' and its value is foo
  441.       argn(3) = `sin (pi)' and its value is 1
  442.  
  443.     on the standard output stream.  If nargin is zero, argn is not defined.
  444.   * Functions like quad, fsolve, and lsode can take either a function
  445.     name or a simple function body as a string.  For example,
  446.  
  447.       quad ("sqrt (x)", 0, 1)
  448.  
  449.     is equivalent to
  450.  
  451.       function y = f (x) y = sqrt (x); endfunction
  452.       quad ("f", 0, 1)
  453.  
  454.   * If the argument to eig() is symmetric, Octave uses the specialized
  455.     Lapack subroutine for symmetric matrices for a significant
  456.     increase in performance.
  457.  
  458.   * If the argument to lsode that names the user-supplied function is
  459.     a 2-element string array, the second element is taken as the name
  460.     of the Jacobian function.  The named function should have the
  461.     following form:
  462.  
  463.       JAC = f (X, T)
  464.  
  465.     where JAC is the Jacobian matrix of partial derivatives of the
  466.     right-hand-side functions that define the set of differential
  467.     equations with respect to the state vector X.
  468.  
  469.   * Global variables are now initialized to the empty matrix, for
  470.     compatibility with Matlab.
  471.  
  472.   * Explicit initialization of global variables only happens once.
  473.     For example, after the following statements are evaluated, g still
  474.     has the value 1.
  475.  
  476.       global g = 1
  477.       global g = 2
  478.  
  479.     This is useful for initializing global variables that are used to
  480.     maintain state information that is shared among several functions.
  481.  
  482.   * Structure elements completion on the command line actually works
  483.     now.
  484.  
  485.   * The new built-in variable `fixed_point_format' controls whether
  486.     Octave uses a scaled fixed-point format for displaying matrices.
  487.     The default value is 0 unless you use --traditional.
  488.  
  489.   * The function sumsq now computes sum (x .* conj (x)) for complex values.
  490.  
  491.   * The new built-in variable max_recursion_depth allows you to
  492.     prevent Octave from attempting infinite recursion.  The default
  493.     value is 256.
  494.  
  495.   * Octave now uses kpathsea 3.2.
  496.  
  497.   * New configure option, --enable-readline.
  498.  
  499.   * New configure option, --enable-static.
  500.  
  501. Summary of changes for version 2.0.7:
  502. ------------------------------------
  503.  
  504.   This is a bug-fixing release.  There are no new user-visible features.
  505.  
  506. Summary of changes for version 2.0.6:
  507. ------------------------------------
  508.  
  509.   This is primarily a bug-fixing release.  There are only a few new
  510.   user-visible features.
  511.  
  512.   * The new built-in variable default_eval_print_flag controls whether
  513.     Octave prints the results of commands executed by eval() that do
  514.     not end with semicolons.  The default is 1.
  515.  
  516.   * The new built-in constant OCTAVE_HOME specifies the top-level
  517.     directory where Octave is installed.
  518.  
  519.   * Octave no longer includes functions to work with NPSOL or QPSOL,
  520.     because they are not free software.
  521.  
  522.   * The new built-in variable called kluge_procbuf_delay specifies the
  523.     number of microseconds to delay in the parent process after
  524.     forking.  By default on gnu-win32 systems, it's set to 500000 (1/2
  525.     second).  On other systems, the default value is 0.  Delaying for
  526.     a short time in the parent after forking seems to avoid problems
  527.     in which communicating with subprocesses via pipes would sometimes
  528.     cause Octave to hang.  I doubt that the delay is really the right
  529.     solution.  If anyone has a better idea, I'd love to hear it.
  530.  
  531. Summary of changes for version 2.0.5:
  532. ------------------------------------
  533.  
  534.   * A `switch' statement is now available.  See the Statements chapter
  535.     in the manual for details.
  536.  
  537.   * Commands like ls, save, and cd may now also be used as formal
  538.     parameters for functions.
  539.  
  540.   * More tests.
  541.  
  542. Summary of changes for version 2.0.4:
  543. ------------------------------------
  544.  
  545.   * It is now possible to use commands like ls, save, and cd as simple
  546.     variable names.  They still cannot be used as formal parameters
  547.     for functions, or as the names of structure variables.  Failed
  548.     assignments leave them undefined (you can recover the orginal
  549.     function definition using clear).
  550.  
  551.   * Is is now possible to invoke commands like ls, save, and cd as
  552.     normal functions (for example, load ("foo", "x", "y", "z")).
  553.  
  554. Summary of changes for version 2.0.3:
  555. ------------------------------------
  556.  
  557.   * The manual has been completely revised and now corresponds much
  558.     more closely to the features of the current version.
  559.  
  560.   * The return value for assignment expressions is now the RHS since
  561.     that is more consistent with the way other programming languages
  562.     work.  However, Octave still prints the entire LHS value so that
  563.  
  564.       x = zeros (1, 2);
  565.       x(2) = 1
  566.  
  567.     still prints
  568.  
  569.       x =
  570.  
  571.         0  1
  572.  
  573.     but an assignment like
  574.  
  575.       z = x(2) = 1
  576.  
  577.     sets z to 1 (not [ 0, 1 ] as in previous versions of Octave).
  578.  
  579.   * It is now much easier to make binary distributions.  See the
  580.     Binary Distributions section of the manual for more details.
  581.  
  582. Summary of changes for version 2.0.2:
  583. ------------------------------------
  584.  
  585.   * Octave now stops executing commands from a script file if an error
  586.     is encountered.
  587.  
  588.   * The return, and break commands now cause Octave to quit executing
  589.     commands from script files.  When used in invalid contexts, the
  590.     break, continue, and return commands are now simply ignored
  591.     instead of producing parse errors.
  592.  
  593.   * size ("") is now [0, 0].
  594.  
  595.   * New functions:
  596.  
  597.       sleep   -- pause execution for a specified number of seconds
  598.       usleep  -- pause execution for a specified number of microseconds
  599.  
  600. Summary of changes for version 2.0:
  601. ----------------------------------
  602.  
  603.   * The set and show commands for setting and displaying gnuplot
  604.     parameters have been replaced by gset and gshow.  This change will
  605.     probably break lots of things, but it is necessary to allow for
  606.     compatibility with the Matlab graphics and GUI commands in a
  607.     future version of Octave.  (For now, the old set and show commands
  608.     do work, but they print an annoying warning message to try to get
  609.     people to switch to using gset.)
  610.  
  611.   * Octave has been mostly ported to Windows NT and Windows 95 using
  612.     the beta 17 release of the Cygnus GNU-WIN32 tools.  Not everything
  613.     works, but it is usable.  See the file README.WINDOWS for more
  614.     information.
  615.  
  616.   * Dynamic linking works on more systems using dlopen() and friends
  617.     (most modern Unix systems) or shl_load() and friends (HP/UX
  618.     systems).  A simple example is provided in examples/hello.cc.
  619.     For this feature to work, you must configure Octave with
  620.     --enable-shared.  You may also need to have a shared-library
  621.     version of libg++ and libstdc++.
  622.  
  623.   * New data types can be added to Octave by writing a C++ class.  On
  624.     systems that support dynamic linking, new data types can be added
  625.     to an already running Octave binary.  A simple example appears in
  626.     the file examples/make_int.cc.  Other examples are the standard
  627.     Octave data types defined in the files src/ov*.{h,cc} and
  628.     src/op-*.cc.
  629.  
  630.   * The configure option --enable-bounds-check turns on bounds
  631.     checking on element references for Octave's internal array and
  632.     matrix classes.  It's enabled by default.  To disable this
  633.     feature, configure Octave with --disable-bounds-check.
  634.  
  635.   * The C-style I/O functions (fopen, fprintf, etc.) have been
  636.     rewritten to be more compatible with Matlab.  The fputs function
  637.     has also been added.  Usage of the *printf functions that was
  638.     allowed in previous versions of Octave should still work.
  639.     However, there is no way to make the new versions of the *scanf
  640.     functions compatible with Matlab *and* previous versions of
  641.     Octave.  An optional argument to the *scanf functions is now
  642.     available to make them behave in a way that is compatible with
  643.     previous versions of Octave.
  644.  
  645.   * Octave can now read files that contain columns of numbers only,
  646.     with no header information.  The name of the loaded variable is
  647.     constructed from the file name.  Each line in the file must have
  648.     the same number of elements.
  649.  
  650.   * The interface to the pager has changed.  The new built-in variable
  651.     `page_output_immediately' controls when Octave sends output to the
  652.     pager.  If it is nonzero, Octave sends output to the pager as soon
  653.     as it is available.  Otherwise, Octave buffers its output and
  654.     waits until just before the prompt is printed to flush it to the
  655.     pager.
  656.  
  657.   * Expressions of the form
  658.  
  659.       A(i,j) = x
  660.  
  661.     where X is a scalar and the indices i and j define a matrix of
  662.     elements now work as you would expect rather than giving an error.
  663.     I am told that this is how Matlab 5.0 will behave when it is
  664.     released.
  665.  
  666.   * Indexing of character strings now works.
  667.  
  668.   * The echo command has been implemented.
  669.  
  670.   * The document command is now a regular function.
  671.  
  672.   * New method for handling errors:
  673.  
  674.       try
  675.         BODY
  676.       catch
  677.         CLEANUP
  678.       end_try_catch
  679.  
  680.     Where BODY and CLEANUP are both optional and may contain any
  681.     Octave expressions or commands.  The statements in CLEANUP are
  682.     only executed if an error occurs in BODY.
  683.  
  684.     No warnings or error messages are printed while BODY is
  685.     executing.  If an error does occur during the execution of BODY,
  686.     CLEANUP can access the text of the message that would have been
  687.     printed in the builtin constant __error_text__.  This is the same
  688.     as eval (TRY, CATCH) (which may now also use __error_text__) but
  689.     it is more efficient since the commands do not need to be parsed
  690.     each time the TRY and CATCH statements are evaluated.
  691.  
  692.   * Octave no longer parses the help command by grabbing everything
  693.     after the keyword `help' until a newline character is read.  To
  694.     get help for `;' or `,', now, you need to use the command
  695.     `help semicolon' or `help comma'.
  696.  
  697.   * Octave's parser now does some simple constant folding.  This means
  698.     that expressions like 3*i are now evaluated only once, when a
  699.     function is compiled, and the right hand side of expressions like
  700.     a = [1,2;3,4] are treated as true matrix constants rather than
  701.     lists of elements which must be evaluated each time they are
  702.     needed.
  703.  
  704.   * Built-in variables that can take values of "true" and "false" can
  705.     now also be set to any nonzero scalar value to indicate "true",
  706.     and 0 to indicate "false".
  707.  
  708.   * New built-in variables `history_file', `history_size', and
  709.     `saving_history'.
  710.  
  711.   * New built-in variable `string_fill_char' specifies the character
  712.     to fill with when creating arrays of strings.
  713.  
  714.   * If the new built-in variable `gnuplot_has_frames' is nonzero,
  715.     Octave assumes that your copy of gnuplot includes support for
  716.     multiple plot windows when using X11.
  717.  
  718.     If the new built-in variable `gnuplot_has_multiplot' is nonzero,
  719.     Octave assumes that your copy of gnuplot has the multiplot support
  720.     that is included in recent 3.6beta releases.
  721.  
  722.     The initial values of these variables are determined by configure,
  723.     but can be changed in your startup script or at the command line
  724.     in case configure got it wrong, or if you upgrade your gnuplot
  725.     installation.
  726.  
  727.   * The new plot function `figure' allows multiple plot windows when
  728.     using newer versions of gnuplot with X11.
  729.  
  730.   * Octave now notices when the plotter has exited unexpectedly.
  731.  
  732.   * New built-in variable `warn_missing_semicolon'.  If nonzero, Octave
  733.     will warn when statements in function definitions don't end in
  734.     semicolons.  The default value is 0.
  735.  
  736.   * Octave now attempts to continue after floating point exceptions
  737.     or out-of-memory errors.
  738.  
  739.   * If Octave crashes, it now attempts to save all user-defined
  740.     variables in a file named `octave-core' in the current directory
  741.     before exiting.
  742.  
  743.   * It is now possible to get the values of individual option settings
  744.     for the dassl, fsolve, lsode, npsol, qpsol, and quad functions
  745.     using commands like
  746.  
  747.       dassl_reltol = dassl_options ("relative tolerance");
  748.  
  749.   * The svd() function no longer computes the left and right singular
  750.     matrices unnecessarily.  This can significantly improve
  751.     performance for large matrices if you are just looking for the  
  752.     singular values.
  753.  
  754.   * The filter() function is now a built-in function.
  755.  
  756.   * New function randn() returns a pseudo-random number from a normal
  757.     distribution.  The rand() and randn() functions have separate
  758.     seeds and generators.
  759.  
  760.   * Octave's command-line arguments are now available in the built-in
  761.     variable `argv'.  The program name is also available in the
  762.     variables `program_invocation_name' and `program_name'.  If
  763.     executing a script from the command line (e.g., octave foo.m) or
  764.     using the `#! /bin/octave' hack, the program name is set to the
  765.     name of the script.
  766.  
  767.   * New built-in variable `completion_append_char' used as the
  768.     character to append to successful command-line completion
  769.     attempts.  The default is " " (a single space).
  770.  
  771.   * Octave now uses a modified copy of the readline library from
  772.     version 1.14.5 of GNU bash.
  773.  
  774.   * In prompt strings, `\H' expands to the whole host name.
  775.  
  776.   * New built-in variable `beep_on_error'.  If nonzero, Octave will try
  777.     to ring your terminal's bell before printing an error message.
  778.     The default value is 0.
  779.  
  780.   * For functions defined from files, the type command now prints the
  781.     text of the file.  You can still get the text reconstructed from
  782.     the parse tree by using the new option -t (-transformed).
  783.  
  784.   * New command-line argument --traditional sets the following
  785.     preference variables for compatibility with Matlab:
  786.  
  787.       PS1                           = ">> "
  788.       PS2                           = ""
  789.       beep_on_error                 = 1
  790.       default_save_format           = "mat-binary"
  791.       define_all_return_values      = 1
  792.       do_fortran_indexing           = 1
  793.       empty_list_elements_ok        = 1
  794.       implicit_str_to_num_ok        = 1
  795.       ok_to_lose_imaginary_part     = 1
  796.       page_screen_output            = 0
  797.       prefer_column_vectors         = 0
  798.       prefer_zero_one_indexing      = 1
  799.       print_empty_dimensions        = 0
  800.       treat_neg_dim_as_zero         = 1
  801.       warn_function_name_clash      = 0
  802.       whitespace_in_literal_matrix  = "traditional"
  803.  
  804.   * New functions:
  805.  
  806.       readdir  -- returns names of files in directory as array of strings
  807.       mkdir    -- create a directory
  808.       rmdir    -- remove a directory
  809.       rename   -- rename a file
  810.       unlink   -- delete a file
  811.       umask    -- set permission mask for file creation
  812.       stat     -- get information about a file
  813.       lstat    -- get information about a symbolic link
  814.       glob     -- perform filename globbing
  815.       fnmatch  -- match strings with filename globbing patterns
  816.       more     -- turn the pager on or off
  817.       gammaln  -- alias for lgamma
  818.  
  819.   * New audio functions from Andreas Weingessel
  820.     <Andreas.Weingessel@ci.tuwien.ac.at>.
  821.  
  822.       lin2mu     -- linear to mu-law encoding
  823.       loadaudio  -- load an audio file to a vector
  824.       mu2lin     -- mu-law to linear encoding
  825.       playaudio  -- play an audio file
  826.       record     -- record sound and store in vector
  827.       saveaudio  -- save a vector as an audio file
  828.       setaudio   -- executes mixer shell command
  829.  
  830.   * New plotting functions from Vinayak Dutt.  Ones dealing with
  831.     multiple plots on one page require features from gnuplot 3.6beta
  832.     (or later).
  833.  
  834.       bottom_title  -- put title at the bottom of the plot
  835.       mplot         -- multiplot version of plot
  836.       multiplot     -- switch multiple-plot mode on or off
  837.       oneplot       -- return to one plot per page
  838.       plot_border   -- put a border around plots
  839.       subplot       -- position multiple plots on a single page
  840.       subwindow     -- set subwindow position for next plot
  841.       top_title     -- put title at the top of the plot
  842.       zlabel        -- put a label on the z-axis
  843.  
  844.   * New string functions
  845.  
  846.       bin2dec  -- convert a string of ones and zeros to an integer
  847.       blanks   -- create a string of blanks
  848.       deblank  -- delete trailing blanks
  849.       dec2bin  -- convert an integer to a string of ones and zeros
  850.       dec2hex  -- convert an integer to a hexadecimal string
  851.       findstr  -- locate occurrences of one string in another
  852.       hex2dec  -- convert a hexadecimal string to an integer
  853.       index    -- return position of first occurrence a string in another
  854.       rindex   -- return position of last occurrence a string in another
  855.       split    -- divide one string into pieces separated by another
  856.       str2mat  -- create a string matrix from a list of strings
  857.       strrep   -- replace substrings in a string
  858.       substr   -- extract a substring
  859.  
  860.     The following functions return a matrix of ones and zeros.
  861.     Elements that are nonzero indicate that the condition was true for
  862.     the corresponding character in the string array.
  863.  
  864.       isalnum   -- letter or a digit
  865.       isalpha   -- letter
  866.       isascii   -- ascii
  867.       iscntrl   -- control character
  868.       isdigit   -- digit
  869.       isgraph   -- printable (but not space character)
  870.       islower   -- lower case
  871.       isprint   -- printable (including space character)
  872.       ispunct   -- punctuation
  873.       isspace   -- whitespace
  874.       isupper   -- upper case
  875.       isxdigit  -- hexadecimal digit
  876.  
  877.     These functions return new strings.
  878.  
  879.       tolower  -- convert to lower case
  880.       toupper  -- convert to upper case
  881.  
  882.   * New function, fgetl.  Both fgetl and fgets accept an optional
  883.     second argument that specifies a maximum number of characters to
  884.     read, and the function fgets is now compatible with Matlab.
  885.  
  886.   * Printing in hexadecimal format now works (format hex).  It is also
  887.     possible to print the internal bit representation of a value
  888.     (format bit).  Note that these formats are only implemented for
  889.     numeric values.
  890.  
  891.   * Additional structure features:
  892.  
  893.     -- Name completion now works for structures.
  894.  
  895.     -- Values and names of structure elements are now printed by
  896.        default.  The new built-in variable `struct_levels_to_print'
  897.        controls the depth of nested structures to print.  The default
  898.        value is 2.
  899.  
  900.     -- New functions:
  901.  
  902.        struct_contains (S, NAME) -- returns 1 if S is a structure with
  903.                                     element NAME; otherwise returns 0.
  904.  
  905.        struct_elements (S)       -- returns the names of all elements
  906.                                     of structure S in an array of strings. 
  907.  
  908.   * New io/subprocess functions:
  909.  
  910.       fputs    -- write a string to a file with no formatting
  911.       popen2   -- start a subprocess with 2-way communication
  912.       mkfifo   -- create a FIFO special file
  913.       popen    -- open a pipe to a subprocess
  914.       pclose   -- close a pipe from a subprocess
  915.       waitpid  -- check the status of or wait for subprocesses
  916.  
  917.   * New time functions:
  918.  
  919.       asctime    -- format time structure according to local format
  920.       ctime      -- equivalent to `asctime (localtime (TMSTRUCT))'
  921.       gmtime     -- return time structure corresponding to UTC
  922.       localtime  -- return time structure corresponding to local time zone
  923.       strftime   -- print given time structure using specified format
  924.       time       -- return current time
  925.  
  926.     The `clock' and `date' functions are now implemented in M-files
  927.     using these basic functions.
  928.  
  929.   * Access to additional Unix system calls:
  930.  
  931.       dup2     -- duplicate a file descriptor
  932.       exec     -- replace current process with a new process
  933.       fcntl    -- control open file descriptors
  934.       fork     -- create a copy of the current process
  935.       getpgrp  -- return the process group id of the current process
  936.       getpid   -- return the process id of the current process
  937.       getppid  -- return the process id of the parent process
  938.       getuid   -- return the real user id of the current process
  939.       getgid   -- return the real group id of the current process
  940.       geteuid  -- return the effective user id of the current process
  941.       getegid  -- return the effective group id of the current process
  942.       pipe     -- create an interprocess channel
  943.  
  944.   * Other new functions:
  945.  
  946.       commutation_matrix  -- compute special matrix form
  947.       duplication_matrix  -- compute special matrix form
  948.       common_size.m       -- bring arguments to a common size
  949.       completion_matches  -- perform command completion on string
  950.       tilde_expand        -- perform tilde expansion on string
  951.  
  952.       meshgrid  -- compatible with Matlab's meshgrid function
  953.       tmpnam    -- replaces octave_tmp_file_name
  954.       atexit    -- register functions to be called when Octave exits
  955.       putenv    -- define an environment variable
  956.       bincoeff  -- compute binomial coefficients
  957.       nextpow2  -- compute the next power of 2 greater than a number
  958.       detrend   -- remove a best fit polynomial from data
  959.       erfinv    -- inverse error function
  960.       shift     -- perform a circular shift on the elements of a matrix
  961.       pow2      -- compute 2 .^ x
  962.       log2      -- compute base 2 logarithms
  963.       diff      -- compute differences of matrix elements
  964.       vech      -- stack columns of a matrix below the diagonal
  965.       vec       -- stack columns of a matrix to form a vector
  966.       xor       -- compute exclusive or
  967.  
  968.   * Functions for getting info from the password database on Unix systems:
  969.  
  970.       getpwent  -- read entry from password-file stream, opening if necessary
  971.       getpwuid  -- search for password entry with matching user ID
  972.       getpwnam  -- search for password entry with matching username
  973.       setpwent  -- rewind the password-file stream
  974.       endpwent  -- close the password-file stream
  975.  
  976.   * Functions for getting info from the group database on Unix systems:
  977.  
  978.       getgrent  -- read entry from group-file stream, opening if necessary
  979.       getgrgid  -- search for group entry with matching group ID
  980.       getgrnam  -- search for group entry with matching group name
  981.       setgrent  -- rewind the pgroup-file stream
  982.       endgrent  -- close the group-file stream
  983.  
  984.   * The New function octave_config_info returns a structure containing
  985.     information about how Octave was configured and compiled.
  986.  
  987.   * New function getrusage returns a structure containing system
  988.     resource usage statistics.  The `cputime' function is now defined
  989.     in an M-file using getrusage.
  990.  
  991.   * The info reader is now a separate binary that runs as a
  992.     subprocess.  You still need the info reader distributed with
  993.     Octave though, because there are some new command-line arguments
  994.     that are not yet available in the public release of Info.
  995.  
  996.   * There is a new built-in variable, INFO_PROGRAM, which is used as
  997.     the name of the info program to run.  Its initial value is
  998.     $OCTAVE_HOME/lib/octave/VERSION/exec/ARCH/info, but that value can
  999.     be overridden by the environment variable OCTAVE_INFO_PROGRAM, or
  1000.     the command line argument --info-program NAME, or by setting the
  1001.     value of INFO_PROGRAM in a startup script.
  1002.  
  1003.   * There is a new built-in variable, EXEC_PATH, which is used as
  1004.     the list of directories to search when executing subprograms.  Its
  1005.     initial value is taken from the environment variable
  1006.     OCTAVE_EXEC_PATH (if it exists) or PATH, but that value can be
  1007.     overridden by the the command line argument --exec-path PATH, or
  1008.     by setting the value of EXEC_PATH in a startup script.  If the
  1009.     EXEC_PATH begins (ends) with a colon, the directories
  1010.     $OCTAVE_HOME/lib/octave/VERSION/exec/ARCH and $OCTAVE_HOME/bin are
  1011.     prepended (appended) to EXEC_PATH (if you don't specify a value
  1012.     for EXEC_PATH explicitly, these special directories are prepended
  1013.     to your PATH).
  1014.  
  1015.   * If it is present, Octave will now use an `ls-R' database file to
  1016.     speed up recursive path searching.  Octave looks for a file called
  1017.     ls-R in the directory specified by the environment variable
  1018.     OCTAVE_DB_DIR.  If that is not set but the environment variable
  1019.     OCTAVE_HOME is set, Octave looks in $OCTAVE_HOME/lib/octave.
  1020.     Otherwise, Octave looks in the directory $datadir/octave (normally
  1021.     /usr/local/lib/octave).
  1022.  
  1023.   * New examples directory.
  1024.  
  1025.   * There is a new script, mkoctfile, that can be used to create .oct
  1026.     files suitable for dynamic linking.
  1027.  
  1028.   * Many more bug fixes.
  1029.  
  1030.   * ChangeLogs are now kept in each subdirectory.
  1031.  
  1032. See NEWS.1 for old news.
  1033.