------------------------------- ANNOUNCING: Octave Version 1.0 ------------------------------- Octave version 1.0 is now available for ftp from ftp.che.utexas.edu 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 contact bug-octave@che.utexas.edu. 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 = 9.50803 0.77287 * 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 ftp.che.utexas.edu. 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. Installation ------------ 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 ftp.che.utexas.edu, ftp.uu.net, prep.ai.mit.edu, and wuarchive.wustl.edu, 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 systems. Implementation -------------- 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. Bugs ---- Please report any problems you have to bug-octave@che.utexas.edu 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 Octave. 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 jwe@che.utexas.edu Department of Chemical Engineering The University of Texas at Austin