[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Octave version 0.79 released

From: John Eaton
Subject: Octave version 0.79 released
Date: Mon, 08 Nov 93 20:51:40 CST

Octave version 0.79 is now available for ftp from
in the directory /pub/octave.  Compressed and gzipped tar files are
available, as are diffs relative to version 0.77.

PLEASE NOTE:  We are only distributing gzipped files because we no
longer have room to distribute both compressed and gzipped files.

Binaries for DECstation, SPARCstation, and i486 Linux systems are also

Binaries for other systems will be made available as time permits, or
as others make them available to us.  If you would like help out by
making binaries available for other systems, please contact

Summary of changes for version 0.79:

  * New control systems functions:

     dgram -- Returns the discrete controllability and observability gramian.
     dlqr  -- Discrete linear quadratic regulator design.
     dlqe  -- Discrete linear quadratic estimator (Kalman Filter) design.
     c2d   -- Convert continuous system description to discrete time
              description assuming zero-order hold and given sample time.

  * The max (min) functions can now return the index of the max (min)
    value as a second return value.

Summary of changes for version 0.78:

  * Octave's handling of global variables has been completely
    rewritten.  To access global variables inside a function, you must
    now declare them to be global within the function body.  Likewise,
    if you do not declare a variable as global at the command line,
    you will not have access to it within a function, even if it is
    declared global there.  For example, given the function

      function f ()
        global x = 1;
        y = 2;

    the global variable `x' is not visible at the top level until the

      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 builtin 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

  * 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/, 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

  * 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.

John W. Eaton      | Among other things, we have added the missing semicolon.
address@hidden |                   -- Jim Blandy, announcing Emacs 19.15.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]