Announcing Octave - a high-level language for numerical computations

Announcing Octave - a high-level language for numerical computations

Post by John Eato » Thu, 24 Feb 1994 10:13:37

        [ Octave is also available on FSF's Languages Tape for those
          without ftp access.


ANNOUNCING:  Octave Version 1.0

Octave version 1.0 is now available for ftp from
in the directory /pub/octave.  Gzipped tar files are available, as are
diffs relative to version 0.83.

Binaries for several popular systems are also available.  If you would
like help out by making binaries available for other systems, please

What is Octave?

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

Octave can do arithmetic for real and complex scalars and matrices,
solve sets of nonlinear algebraic equations, integrate functions over
finite and infinite intervals, and integrate systems of ordinary
differential and differential-algebraic equations.

Octave uses the GNU readline library to handle reading and editing
input.  By default, the line editing commands are similar to the
cursor movement commands used by GNU Emacs, and a vi-style line
editing interface is also available.  At the end of each session, the
command history is saved, so that commands entered during previous
sessions are not lost.

The Octave distribution includes a 150+ page Texinfo manual.  Access
to the complete text of the manual is available via the help command
at the Octave prompt.

Two and three dimensional plotting is fully supported using gnuplot.

The underlying numerical solvers are currently standard Fortran ones
like Lapack, Linpack, Odepack, the Blas, etc., packaged in a library
of C++ classes.  If possible, the Fortran subroutines are compiled
with the system's Fortran compiler, and called directly from the C++
functions.  If that's not possible, you can still compile Octave if
you have the free Fortran to C translator f2c.

Octave is also free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation.

Instructions for obtaining Octave are given below.

Using Octave

Here are a few examples of the kinds of things Octave can do.

* to enter and compute the SVD of a matrix:

  bash$ octave
  Octave, version 1.0.  Copyright (C) 1992, 1993, 1994 John W. Eaton.
  This is free software with ABSOLUTELY NO WARRANTY.
  For details, type `warranty'.

  octave:1> a = [ 1, 2, 3 ; 4, 5, 6 ]
  a =

    1  2  3
    4  5  6

  octave:2> svd (a)
  ans =


* to also get the left and right singular matrices:

  octave:3> [u, s, v] = svd (a)
  u =

    -0.38632  -0.92237
    -0.92237   0.38632

  s =

    9.50803  0.00000  0.00000
    0.00000  0.77287  0.00000

  v =

    -0.42867   0.80596   0.40825
    -0.56631   0.11238  -0.81650
    -0.70395  -0.58120   0.40825

* to check the result:

  octave:4> u * s * v'
  ans =

    1.00000  2.00000  3.00000
    4.00000  5.00000  6.00000

* to solve a set of differential equations (ending a statement with a
  semicolon suppresses the default output):

  octave:5> function xdot = f (x, t)
  >   xdot = zeros (3, 1);
  >   xdot(1) = 77.27 * (x(2) - x(1) * x(2) + x(1) - 8.375e-06 * x(1)^2);
  >   xdot(2) = (x(3) - x(1) * x(2) - x(2)) / 77.27;
  >   xdot(3) = 0.161*(x(1) - x(3));
  > endfunction
  octave:6> output_times = [0, logspace (-1, 2.4), logspace (2.4, 2.69896)];
  octave:7> y = lsode ("f", [4; 1.1; 4], output_times);
  octave:8> y
  y =

     4.0000e+00   1.1000e+00   4.0000e+00
     7.8425e+00   1.0950e+00   4.0343e+00
     8.2873e+00   1.0937e+00   4.0456e+00
     8.7588e+00   1.0921e+00   4.0602e+00

* and save the output in a text file:

  save foo.dat y

Where to get Octave

If you are on the Internet, you can copy the latest distribution
version of Octave from the file /pub/octave/octave-M.N.tar.gz, on the
host  This tar file has been compressed with GNU
gzip, so be sure to use binary mode for the transfer.  M and N stand
for version numbers; look at a listing of the directory through ftp to
see what version is available.  After you unpack the distribution, be
sure to look at the files README and INSTALL.


Octave requires approximately 25MB of disk storage to unpack and
install (significantly less if you don't compile with debugging
symbols).  In order to build Octave, you will need a current version
of g++, libg++, and GNU make.  If you don't have these tools, you can
get them from many anonymous ftp archives, including,,, and, or by writing to
the FSF at 675 Mass Ave, Cambridge, MA 02139, USA.

Octave has been compiled and tested with g++ and libg++ on a
SPARCstation 2 running SunOS 4.1.2, an IBM RS/6000 running AIX 3.2.5,
a DECstation 5000/240 running Ultrix 4.2a, HP 9000/700 series systems
running HP-UX 9.01, i486 systems running Linux and NetBSD, and NeXT


Octave is being developed with GNU make, bison (a replacement for
YACC), flex (a replacement for lex), gcc/g++, and libg++ on Sun
SPARCstations, DEC DECstations, and IBM RS/6000s. It should be
easy to port it to any machine that has a working port of gcc/g++.

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

The library of C++ classes may also be useful by itself, and they are
distributed under the same terms as Octave.


Please report any problems you have to

Your bug reports play an essential role in making Octave reliable.

Reporting a bug may help you by bringing a solution to your problem,
or it may not.  In any case, the principal function of a bug report
is to help the entire community by making the next version of Octave
work better.  Bug reports are your contribution to the maintenance of

The file BUGS in the top level directory of the source distribution
contains more information about how to provide useful bug reports.

Comments and suggestions are also always welcome.

John W. Eaton
Department of Chemical Engineering
The University of Texas at Austin

[ Most GNU software is packed using the new `gzip' compression program.
  Source code is available on most sites distributing GNU software.

  For information on how to order GNU software on tape, floppy, or
  cd-rom, check the file etc/ORDERS in the GNU Emacs distribution or in
  GNUinfo/ORDERS on prep, or e-mail a request to:

  By ordering your GNU software from the FSF, you help us continue to
  develop more free software.  Media revenues are our primary source of
  support.  Donations to FSF are deductible on US tax returns.

  The above software will soon be at these ftp sites as well.
  Please try them before!   thanx
        AUSTRALIA: (archie.oz or for ACSnet)


1. - RLaB: High level matrix programming language

I have uploaded to SimTel, the Coast to Coast Software Repository (tm),
(available by anonymous ftp from the primary mirror site OAK.Oakland.Edu
and its mirrors):

SimTel/msdos/math/    RLaB: High level matrix programming language

RLaB v1.17d is a high level matrix-oriented programming language.  RLaB
provides a high level interface to LAPACK, BLAS, FFTPACK, RANLIB, and
Plplot (grahics).  RLaB is _not_ a clone of languages such as those
used by tools like MATLAB or matrix_X/Xmath. However, as Rlab focuses
on creating a good experimental environment (or laboratory) in which to
do matrix math, it can be called "MATLAB-like" since the programming
language possesses similar operators and concepts.  This 32 bit DOS
implementation of RLaB was built using emx0.9a(2) and GNU gcc 2.6.3.
Both DPMI (rsx) and VCPI (emx) DOS extenders are supplied.

Special requirements: 386 or 486 cpu. VESA compliant graphics card

GPL'ed Software.  Uploaded by the author.

Ian Searle

2. 2 Questions: Block multiply & ROM startup code

3. {SEARCH] high-level widgets

4. Cheap SGI...

5. Announce: O-Matrix 5.5; High-Performance Data Analysis now with COM Automation


7. ANNOUNCE: perlDL v1.00 - the 'perl Data Language'

8. Worth the trade?

9. Announce: New High-Performance Matlab Interpreter

10. Matlab as the First language & Numerical Methods

11. ANNOUNCE: Octave Version 2.0 released

12. ANNOUNCE: Octave Version 2.0.4 released

13. ANNOUNCE: Octave Version 2.0.1 released