Octave -- a high-level language for numerical computations. Copyright (C) 1996 John W. Eaton Last updated: Tue Dec 10 01:41:30 1996 Overview -------- 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 is 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; either version 2, or (at your option) any later version. Octave is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the file COPYING for more details. Availability ------------ The latest released version of Octave is always available via anonymous ftp from ftp.che.wisc.edu in the directory /pub/octave. Complete source and binaries for several popular systems are available. Installation and Bugs --------------------- Octave requires approximately 125MB of disk storage to unpack and compile from source (significantly less if you don't compile with debugging symbols or create shared libraries). Once installed, Octave requires approximately 65MB of disk space (again, considerably less if you don't build shared libraries or the binaries and libraries do not include debugging symbols). In order to build Octave, you will need a current version of g++, libg++, and GNU make. Recommended versions are g++ 2.7.2 or 2.7.2.1 libg++ 2.7.1 or 2.7.2 make 3.75 YOU MUST HAVE GNU MAKE TO COMPILE OCTAVE. Octave's Makefiles use features of GNU Make that are not present in other versions of make. GNU Make is very portable and easy to install. See the notes in the files INSTALL and INSTALL.OCTAVE for more specific installation instructions, including directions for installing Octave from a binary distribution. The file BUGS contains a recommended procedure for reporting bugs, as well as a list of known problems and possible fixes. Documentation ------------- Octave's manual has been revised for version 2.0, but it is lagging a bit behind the development of the software. In particular, there is currently no complete documentation of the C++ class libraries or the support for dynamic linking and user-defined data types. If you notice ommissions or inconsistencies, please report them as bugs to bug-octave@bevo.che.wisc.edu. Specific suggestions for ways to improve Octave and its documentation are always welcome. Implemenation ------------- Octave is being developed with the Free Software Foundation's make, bison (a replacement for YACC), flex (a replacement for lex), gcc/g++, and libg++ on an Intel Pentium 133 system running Debian Linux/GNU. It should be possible to install it on any machine that runs GCC/G++. It may also be possible to install it using other implementations of these tools, but it will most certainly require much more work. Do yourself a favor and get the GNU development tools, either via anonymous ftp from prep.ai.mit.edu or by writing the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 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. Additional Information ---------------------- Up to date information about Octave is available on the WWW at the URL http://bevo.che.wisc.edu/octave, including archives of the help-octave, bug-octave, and octave-sources mailing lists. -- John W. Eaton jwe@bevo.che.wisc.edu University of Wisconsin-Madison Department of Chemical Engineering
Since July 1996, most work on Octave has been done using a Linux system, and a number of people who regularly test Octave snapshot releases also primarily use Linux systems. However, I have recently started to receive a significant number of reports from people who say that they can't compile or run Octave on Linux systems. In nearly every case, the problem has turned out to be that the compilers or libraries have not been installed properly. I suspect that this often results from a botched upgrade, or from attempting to install the compilers from the standard source distributions. But in some cases, the cause has been a buggy Linux distribution. Many of these problems go unnoticed because much of the software for Linux is written in C, not C++. Octave compiles, but it won't run --------------------------------- If you can compile Octave, but it crashes with a segmentation fault right away, you probably have incompatible versions of libc and libg++ installed, or you have a version of the dynamic loader, ld.so, that is incompatible with your versions of the libraries, or both. On my development system, I am using the following software: * Linux kernel 2.0.6 * gcc/g++ 2.7.2 * g77 0.5.18 * libg++/libstdc++ 2.7.1.0 * libm 5.0.5 * libc 5.2.18 * libncurses 3.0 * ld.so 1.7.14 * binutils 2.6 I know from experience that the versions listed above seem to work well together. But if you have a newer version of the kernel, you may need a newer version of the C library. I don't have time to keep up with all the various library versions (life is much too short for that), nor do I know which combinations are supposed to work together. That sort of information should be clearly stated in the release notes for the libraries. If it is not, please ask the maintainers of the libraries to clarify the documentation. Please note that I am NOT recommending that everyone running Linux and using Octave should install the same versions of the libraries and compilers that I have. I am simply saying that the versions listed above work for me. Other version combinations may also work, but I don't have time to map out all the possibilities... Craig Earls <cpearls@ziplink.net> reports that the order of installing libc and lig++ is important. If libg++ is installed *first*, Octave will work, but if the libraries are installed in the reverse orfer, Octave fails. The conflict apparently arises because libc and libg++ shared libraries both use libio, however no one seems to be able to provide a clear explanation of exactly what is happening. Octave won't even compile ------------------------- If you can't compile Octave, you should first check to see that your compiler and header files are properly installed. Do you have multiple versions of the g++ include files on your system? Are you sure that your copy of g++ is finding the right set? You can find out by compiling a simple C++ program with -v: bash$ cat foo.cc #include <iostream.h> int main (void) { cerr << "yo\n"; return 0; } bash$ g++ -v foo.cc gcc -v foo.cc -lg++ -lstdc++ -lm Reading specs from /usr/lib/gcc-lib/i486-linux/2.7.2/specs gcc version 2.7.2 /usr/lib/gcc-lib/i486-linux/2.7.2/cpp -lang-c++ -v -undef ... #include "..." search starts here: #include <...> search starts here: /usr/lib/g++-include /usr/local/include /usr/i486-linux/include /usr/lib/gcc-lib/i486-linux/2.7.2/include /usr/include End of search list. ... If the location of the correct set of include files is not listed in the search path, then you might be able to fix that with a symbolic link. However, if your version of libg++ was not compiled with your current version of gcc, you are likely to run into more trouble. The linker can't find -lieee ---------------------------- This can happen because your libraries don't match your version of gcc. Some recent Linux distributions don't include a libieee.a file because IEEE support is now the default and the library is no longer needed, but the gcc specs file still adds -lieee to the linker command if gcc is invoked with the -mieeefp flag. I believe that you should be able to fix this by editing the gcc specs file. In it, you should find something like this: %{!shared: %{mieee-fp:-lieee} %{p:-lgmon} %{pg:-lgmon} \ %{!ggdb:-lc} %{ggdb:-lg}} changing it to %{!shared: %{p:-lgmon} %{pg:-lgmon} %{!ggdb:-lc} %{ggdb:-lg}} should keep gcc from adding -lieee to the link command. You can find the location of the specs file by running the command gcc -v. If you can't edit the gcc specs file for some reason, another solution that should work is to create an empty libieee.a file in the Octave src directory using the command: ar cq libieee.a NOTE: you should fix this problem (either by editing the specs file or by creating the library) *before* running configure and compiling Octave. Otherwise, configure may incorrectly determine that your system doesn't have support for some IEEE math functions. My system doesn't have g77 -------------------------- A binary release of g77 that should work with gcc 2.7.2 is available from sunsite.unc.edu in the directory /pub/Linux/devel/lang/fortran. There is also a Debian package for g77. Problems with g77 on Debian 1.2 systems (and possibly others) ------------------------------------------------------------- The location of the compiler binaries has changed, so the g77 0.5.18 package can not be used without modification. The problem is that the Debian package was built for gcc 2.7.2 and not 2.7.2.1 and the f771 backend is installed in the wrong directory. Version 0.5.19 of g77 has just been released. A fixed Debian package may be made available soon. Until then, you can make things work by copying f771 and libf2c.a from /usr/lib/gcc-lib/i486-linux/2.7.2 to /usr/lib/gcc-lib/i486-linux/2.7.2.1. Upgrading your compiler and libraries ------------------------------------- Installing libg++ on a Linux system is not as simple as it should be, because libg++ shares some basic I/O code with the Linux C library, and they must be compatible. You should get and read the release notes for the compiler and libraries. If you decide to install versions of the libraries that are older (or newer) than the ones you already have, you should follow the directions in the release notes very carefully. If you have comments or suggestions for this document, please contact bug-octave@bevo.che.wisc.edu. John W. Eaton jwe@bevo.che.wisc.edu University of Wisconsin-Madison Department of Chemical Engineering Wed Jan 29 13:39:02 1997
If you don't have NPSOL but you still want to be able to solve NLPs, or if you don't have QPSOL but you still want to solve QPs, you'll need to find replacements or order them from Stanford. If you know of a freely redistributable replacement, please let us know--we might be interested in distributing it with Octave. You can get more information about NPSOL and QPSOL from Stanford University Office of Technology Licensing 857 Serra Street Stanford CA 94305-6225 Tel: (415) 723-0651 Fax: (415) 725-7295 Octave may soon support FSQP, an NLP solver from Andre Tits (andre@src.umd.edu) of the University of Maryland. FSQP is available free of charge to academic sites, but can not be redistributed to third parties.
Octave has been mostly ported to Windows NT and Windows 95 using the beta 17 release of the Cygnus GNU-WIN32 tools. Not everything works, but it is usable. If you would like to volunteer to work on improving this port, please contact bug-octave@bevo.che.wisc.edu. Here is a list of current problems (and workarounds, where available). * There is no binary version of Octave available for Windows NT or Windows 95. One will probably be released when the port is a little more stable. * To compile and install Octave on a Windows NT or Windows 95 system, you will need to get the beta 17 release of the GNU-WIN32 tools. They are available from ftp://ftp.cygnus.com/pub/gnu-win32. * There is a conflict between the files /cygnus/include/g++/String.h and /cygnus/H-i386-cygwin32/i386-cygwin32/include/stringh. You should rename or remove /cygnus/include/g++/String.h. (These file names assume that you have installed the GNU-WIN32 tools in /cygnus). * On Windows 95 systems, there is a bug that causes redirections to /dev/null to fail. You can work around the problem by substituting /dev/nul for /dev/null in all of the files that use it. (This problem is fixed in the b17.1 release of the tools.) * You will need to have f2c and libf2c.a or g77 installed. You can get a copy of f2c from ftp://netlib.att.com/netlib/f2c. * You will also need a termcap library. The GNU termcap library seems to work. You can get it from any GNU archive site, including ftp://prep.ai.mit.edu/pub/gnu/termcap-1.3.tar.gz. * GNU info doesn't work yet. It compiles but doesn't run. Perhaps the problem is just that a proper termcap entry needs to be defined. * If no other pager can be found, Octave will use more.com. Since that's a pretty limited pager (no going backward, etc.) you may want to find a working version of less. The GNU-WIN32 tools used to include a copy of less, but I am told it was dropped from the distribution because it didn't work very well. If you know of a better port of less that will work with Octave, please contact bug-octave@bevo.che.wisc.edu. * To make plotting work, you will need to find a version of gnuplot that can read commands from a pipe. The binary versions of gnuplot for Windows that I found could only read from their command windows, and wouldn't accept commands through a pipe, so they could not be called from Octave. After deleting -DREADLINE from the Makefile, I was able to compile a working version of gnuplot 3.6 beta 315 using the GNU-WIN32 tools, but it does not support the Windows graphics terminal. It does support dumb terminals and lots of other output devices, including PostScript, but it would be much nicer if it could open a separate window and draw pretty graphs there. If you know of solutions for any of these problems, please contact bug-octave@bevo.che.wisc.edu. More information about the GNU-WIN32 project is available via the WWW at http://www.cygnus.com/gnu-win32. John W. Eaton jwe@bevo.che.wisc.edu University of Wisconsin-Madison Department of Chemical Engineering Wed Jan 8 23:15:59 1997
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.