# HG changeset patch # User Kai T. Ohlhus # Date 1508623205 -7200 # Node ID 7ff6daa6b55842bf643714e374a383fe9656cb80 # Parent 312c00dd723af2a467045b2cbbc920e74d31d083 doc: use tree view in Doxygen documentation and add README and etc/HACKING. * doc/doxyhtml/Doxyfile.in: New pages README.md and etd/HACKING.md. Further new doxygen documnetation should go into doc/doxyhtml/pages for claity. New options for the tree view: DISABLE_INDEX = YES (default: NO) GENERATE_TREEVIEW = YES (default: NO) * src/main.in.cc: Remove redundand Doxygen documentation. Doxygen now uses README, see below. * README.md: Markdownify and review the content. The content of README is now displayed on the Doxygen start page. * etc/HACKING.md: Markdownify and review the content. Some ideas where presented on the mailing list, see: https://lists.gnu.org/archive/html/octave-maintainers/2017-10/msg00124.html diff -r 312c00dd723a -r 7ff6daa6b558 README.md --- a/README.md Fri Oct 20 12:11:58 2017 -0400 +++ b/README.md Sun Oct 22 00:00:05 2017 +0200 @@ -1,13 +1,20 @@ -GNU Octave -- a high-level language for numerical computations. +GNU Octave -- a high-level language for numerical computations {#mainpage} +============================================================== Copyright (C) 1996-2017 John W. Eaton Overview -------- -GNU 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. +GNU Octave is a high-level interpreted language, primarily intended +for numerical computations. It provides capabilities for the +numerical solution of linear and nonlinear problems, and for +performing other numerical experiments. It also provides extensive +graphics capabilities for data visualization and manipulation. GNU +Octave is normally used through its interactive interface (CLI and +GUI), but it can also be used to write non-interactive programs. +The GNU Octave language is quite similar to Matlab so that most +programs are easily portable. GNU Octave is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -21,17 +28,17 @@ You should have received a copy of the GNU General Public License along with Octave; see the file COPYING. If not, see -. +. Availability ------------ -The latest released version of Octave is always available via -anonymous ftp from ftp.gnu.org and its many mirror sites around the +The latest released version of Octave is always available from + and many mirror sites around the world. You may also find links to binary distributions at -http://www.octave.org/download.html. The current development sources -may be found on Savannah (http://savannah.gnu.org/projects/octave) -under the Source Code tab. +. The current development +sources may be found under the Source Code tab on +[Savannah](https://savannah.gnu.org/projects/octave/). Installation ------------ @@ -43,43 +50,49 @@ if you don't build shared libraries or the binaries and libraries do not include debugging symbols). -To compile Octave, you will need a recent version of GNU Make. You -will also need a recent version of g++ or another ANSI C++ compiler. -You will also need a Fortran 77 compiler or f2c. If you use f2c, you -will need a script like fort77 that works like a normal Fortran -compiler by combining f2c with your C compiler in a single script. +To compile Octave, you will need a recent version of: + +- [GNU Make](https://www.gnu.org/software/make/) +- [GNU G++](https://gcc.gnu.org/) or another C++11 compiler +- [GNU Fortran](https://gcc.gnu.org/fortran/), another Fortran 77 + compiler, or [f2c](http://www.netlib.org/f2c/) -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. +Octave's Makefiles use features of GNU Make that are not present in +other versions of make. If you use `f2c`, you will need a script +like `fort77` that works like a normal Fortran compiler by combining +`f2c` with your C compiler in a single script. -See the notes in the files INSTALL.OCTAVE and the system-specific README -files in the etc directory of the Octave source distribution for more -specific installation instructions. +See the notes in the files `INSTALL.OCTAVE` and the system-specific +`README` files in the `etc` directory of the Octave source +distribution for more detailed installation instructions. Bugs and Patches ---------------- -The file BUGS explains the recommended procedure for reporting bugs -or contributing patches. +The file `BUGS` explains the recommended procedure for reporting bugs +on the [bug tracker](http://bugs.octave.org) or contributing patches. Documentation ------------- -Octave's manual has been revised for version 3.4, 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. If -you notice omissions or inconsistencies, please report them on the -bug tracker at http://bugs.octave.org. Specific suggestions for ways -to improve Octave and its documentation are always welcome. Reports -with patches are even more welcome. +* [Octave's manual](https://www.octave.org/doc/interpreter/) is a + comprehensive user guide covering introductive and more advanced + topics. +* [Octave's wiki](https://wiki.octave.org) is a user community page, + covering various topics and answering + [FAQ](https://wiki.octave.org/FAQ). +* [Octave's Doxygen](https://www.octave.org/doxygen/) documentation + explains the C++ class libraries. + +Partially, the up-to-dateness of the documentation is lagging a bit +behind the development of the software. If you notice omissions or +inconsistencies, please report them at our bug tracker. Specific +suggestions for ways to improve Octave and its documentation are +always welcome. Reports with patches are even more welcome. Additional Information ---------------------- -Up to date information about Octave is available on the WWW at the -URL http://www.octave.org, including archives of the help, bug, and -maintainers mailing lists. - - -Last updated: Fri, 10 Jun 2011 14:02:32 EDT +Up to date information about Octave is available on the WWW at +, or ask for help via email +. diff -r 312c00dd723a -r 7ff6daa6b558 doc/doxyhtml/Doxyfile.in --- a/doc/doxyhtml/Doxyfile.in Fri Oct 20 12:11:58 2017 -0400 +++ b/doc/doxyhtml/Doxyfile.in Sun Oct 22 00:00:05 2017 +0200 @@ -374,7 +374,9 @@ # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING # Note: If this tag is empty the current directory is searched. -INPUT = @abs_top_srcdir@/src/ \ +INPUT = @abs_top_srcdir@/README.md \ + @abs_top_srcdir@/etc/HACKING.md \ + @abs_top_srcdir@/src/ \ @abs_top_srcdir@/liboctave/ \ @abs_top_srcdir@/libinterp \ @abs_top_srcdir@/libgui @@ -486,6 +488,34 @@ HTML_TIMESTAMP = YES +# If you want full control over the layout of the generated HTML pages it might +# be necessary to disable the index and replace it with your own. The +# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top +# of each HTML page. A value of NO enables the index and the value YES disables +# it. Since the tabs in the index contain the same information as the navigation +# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +DISABLE_INDEX = YES + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. If the tag +# value is set to YES, a side panel will be generated containing a tree-like +# index structure (just like the one that is generated for HTML Help). For this +# to work a browser that supports JavaScript, DHTML, CSS and frames is required +# (i.e. any modern browser). Windows users are probably better off using the +# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can +# further fine-tune the look of the index. As an example, the default style +# sheet generated by doxygen has an example that shows how to put an image at +# the root of the tree instead of the PROJECT_NAME. Since the tree basically has +# the same information as the tab index, you could consider setting +# DISABLE_INDEX to YES when enabling this option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_TREEVIEW = YES + #--------------------------------------------------------------------------- # Configuration options related to the LaTeX output #--------------------------------------------------------------------------- diff -r 312c00dd723a -r 7ff6daa6b558 etc/HACKING.md --- a/etc/HACKING.md Fri Oct 20 12:11:58 2017 -0400 +++ b/etc/HACKING.md Sun Oct 22 00:00:05 2017 +0200 @@ -1,346 +1,304 @@ --*- outline -*- - -This file attempts to describe the rules to use when hacking Octave. -DO NOT put this file into the distribution. +Hacking Octave +============== -* Working from the repository - -These notes are intended to help people working on sources cloned from -the savannah source code repository. -These requirements do not apply when building from a distribution tarball. +This file attempts to describe the rules to use when hacking the +Octave sources cloned from the Savannah source code +[repository](https://hg.savannah.gnu.org/hgweb/octave/). +**DO NOT** put this file into the distribution. These requirements +do not apply when building from a distribution tarball. -* Quick start +Quick start +----------- - 1. Install all the required dependencies. Precisely how to do that - depends on what type of system you are using. There are more - details below. +1. Install all the required dependencies. Precisely how to do that + depends on what type of system you are using. There are more + details below. - 2. Clone the Octave sources: +2. Clone the Octave sources: - hg clone http://www.octave.org/hg/octave + hg clone https://www.octave.org/hg/octave - 3. Change to the top-level directory of the Octave source tree and run - the bootstrap script: +3. Change to the top-level directory of the Octave source tree and + run the `bootstrap` script: cd octave ./bootstrap - 4. Create a build directory, cd to it, then run configure and make: +4. Create a build directory, `cd` to it, then run `configure` and + `make`, or `make -jX` (to run `X` simultaneous jobs): mkdir .build cd .build ../configure - make + make -j2 -** Requirements +Requirements +------------ We've opted to keep only the highest-level sources in the repository. This eases our maintenance burden, (fewer merges, etc.), but imposes more requirements on anyone wishing to build from the just-cloned sources. For example, you have to use the latest stable versions of -the maintainer tools we depend upon, including: +the maintainer tools we depend upon. These include: - - Autoconf - - Automake - - Bison - - Flex - - Gnulib - - GNU Make - - gperf - - Gzip - - Libtool - - Mercurial - - Perl - - Rsync - - Tar +- [Autoconf](https://www.gnu.org/software/autoconf/) +- [Automake](https://www.gnu.org/software/automake/) +- [Bison](https://www.gnu.org/software/bison/) +- [Flex](https://www.gnu.org/software/flex/) +- [Gnulib](https://www.gnu.org/software/gnulib/) +- [GNU Make](https://www.gnu.org/software/make/) +- [gperf](https://www.gnu.org/software/gperf/) +- [Gzip](https://www.gnu.org/software/gzip/) +- [Libtool](https://www.gnu.org/software/libtool/) +- [Mercurial](https://www.mercurial-scm.org/) +- [Perl](https://www.cpan.org/) +- [Rsync](https://samba.anu.edu.au/rsync/) +- [Tar](https://www.gnu.org/software/tar/) -In addition to these maintainer tools, Octave makes use of many external -libraries and packages. See the file doc/interpreter/install.txi for the -complete list of required and optional dependencies. +In addition to these maintainer tools, Octave makes use of many +external libraries and packages. See `doc/interpreter/install.txi` +for the complete list of required and optional dependencies. Only building the initial full source tree will be a bit painful. -Later, after synchronizing from the repository, a plain `make' should +Later, after synchronizing from the repository, a plain `make` should be sufficient. -** First clone +First clone +----------- If you are reading these notes, you may have already managed to clone -this package from the repository. For the record, you will find all the -relevant information on downloading sources at: +this package from the repository. For the record, you will find all +the relevant information on downloading sources at: - http://www.octave.org/download.html + -After cloning Octave, you will need to run the bootstrap script: +After cloning Octave, you will need to run the `bootstrap` script: - $ ./bootstrap + ./bootstrap -This script will examine the source tree and generate some Makefile -fragments, then run autotools scripts to generate Makefile.in files from -Makefile.am files and create the configure script. The bootstrap script -comes from gnulib, but is kept in the Octave source archive. It should -be updated from the gnulib sources as necessary. +This script will examine the source tree and generate some `Makefile` +fragments, then run autotools scripts to generate `Makefile.in` files +from `Makefile.am` files and create the `configure` script. The +`bootstrap` script comes from gnulib, but is kept in the Octave +source archive. It should be updated from the gnulib sources as +necessary. If you have a copy of gnulib in some directory apart from the Octave -source tree, then pass the name of the directory containing gnulib-tool -to the bootstrap script using the option: +source tree, then pass the name of the directory containing +`gnulib-tool` to the `bootstrap` script using the option: - --gnulib-srcdir=DIRNAME + --gnulib-srcdir=DIRNAME -If you have downloaded gnulib directly, DIRNAME will be the directory where -gnulib was unpacked. If you have installed gnulib using a package -manager, DIRNAME is likely to be /usr/bin or /usr/local/bin(where the -gnulib-tool script resides). +If you have downloaded gnulib directly, `DIRNAME` will be the +directory where gnulib was unpacked. If you have installed gnulib +using a package manager, `DIRNAME` is likely to be `/usr/bin` or +`/usr/local/bin` (where the gnulib-tool script resides). -By using an external gnulib directory, you can share a single gnulib source -tree among several projects. Since 2011, the gnulib sources are a Mercurial -subrepository, so they will be automatically updated to the -corresponding Mercurial revision if you update the working directory to -a past revision not too far in the past. +By using an external gnulib directory, you can share a single gnulib +source tree among several projects. Since 2011, the gnulib sources +are a Mercurial subrepository of the Octave repository, so they will +be automatically updated to the corresponding Mercurial revision if +you update the working directory to a past revision not too far in +the past. -Additional options besides --gnulib-srcdir can be passed to bootstrap and -they will be forwarded without modification to the gnulib bootstrap script. +Additional options besides `--gnulib-srcdir` can be passed to +`bootstrap` and they will be forwarded without modification to the +gnulib `bootstrap` script. -Once the bootstrap script completes successfully, you may configure and -build Octave. We recommend that you build Octave in a separate -directory tree from the sources. For example, if you have just finished -running the bootstrap script in the top-level source directory, run the -following commands to create a build tree, configure, and build Octave: +Once the `bootstrap` script completes successfully, you may configure +and build Octave. We recommend that you build Octave in a separate +directory tree from the sources. For example, if you have just +finished running the `bootstrap` script in the top-level source +directory, run the following commands to create a build tree, +configure, and build Octave: - $ mkdir .build - $ cd .build - $ ../configure - $ make - $ make check + mkdir .build + cd .build + ../configure + make -j2 + make check -At this point, there should be no difference between your working tree -and the currently visited hg revision: +The `-j2` after the first `make` call means, that two jobs run +simultaneously. This number may be increased depending on your +system. At this point, there should be no difference between your +working tree and the currently visited hg revision: - $ hg diff + hg diff should output no difference. -** Coding style +Coding style +------------ -The most important advice is to follow any conventions you detect in the -file being edited. In addition, Octave maintainers have written a lot -on the subject. See http://wiki.octave.org/Contribution_guidelines +The most important advice is to follow any conventions you detect +in the file being edited. In addition, Octave maintainers have +written a lot on the subject. See +. -* Bugs and patches +Bugs and patches +---------------- See the file BUGS in this directory for more guidance on reporting bugs and preparing patches. -* Code layout +Source code directory layout +---------------------------- An overview of the directory layout of Octave's source files: - build-aux -- scripts which support the build process +- `build-aux` + scripts which support the build process. +- `doc` + Texinfo and Doxygen documentation for Octave. - doc -- Texinfo documentation for Octave +- `etc` + miscellaneous files, such as this `HACKING` howto. +- `examples` + some example files (`mkoctfile` and mex samples, old class + programming interface). - etc -- miscellaneous files, such as this HACKING howto - +- `gnulib` + gnulib subrepo. This is a clone of the gnulib source tree + maintained by the Octave project. The default branch is + identical to the upstream gnulib sources. There is also an + `octave-stable` branch that may contain changes as needed for + the `stable` branch in the Octave archive. We usually don't + want to update gnulib sources when going from one stable point + release to the next, but we occasionally need to include small + updates. - examples -- some example files (mkoctfile and mex samples, old class - programming interface) - +- `libgnu` + gnulib sources that we use. The files here are copied here from + the gnulib directory by the `bootstrap` script. - gnulib -- gnulib subrepo. This is a clone of the gnulib source - tree maintained by the Octave project. The default - branch is identical to the upstream gnulib sources. - There is also an "octave-stable" branch that may - contain changes as needed for the "stable" branch in - the Octave archive. We usually don't want to update - gnulib sources when going from one stable point - release to the next, but we occasionally need to - include small updates. +- `liboctave` + C++ interfaces to the numerical libraries, Fortran numerical + libraries, various OS facilities, and utility functions. + - `array` + the base `Array`, `NDArray`, `Matrix`, and `Sparse` classes. + - `external` + various numerical libraries (mostly Fortran). + - `amos` bessel functions + - `blas-xtra` wrappers for blas functions used in Octave + - `daspk` large scale differential algebraic equation solver + - `dasrt` differential algebraic equation solver with root finding + - `dassl` differential-algebraic system solver + - `fftpack` subroutines for fast fourier transforms + - `lapack-xtra` wrappers for lapack functions used in Octave + - `odepack` ordinary differential equation solver + - `ordered-qz` code for ordering eigenvalues for QZ factorization + - `quadpack` subroutines for numerical integration + - `ranlib` random number generators + - `slatec-err` slatec error handling library + - `slatec-fn` various special function subroutines + - `numeric` + C++ numerical algorithms and interfaces to the Fortran + algorithms. + - `operators` + code for operators that act on base classes (such as `Array`). + - `system` + OS-related functions. + - `util` + utility and miscellaneous functions. + - `wrappers` + C++ wrappers for gnulib functions written in C. - - libgnu -- gnulib sources that we use. The files here are - copied here from the gnulib directory by the - bootstrap script. +- `libinterp` + the interpreter itself plus lots of infrastructure around it. + Octave's extensive `octave_value` class hierarchy for + polymorphically handling all Octave types is defined here. + The built-in functions are also defined here. + - `octave-value` + the `octave_value` class hierarchy. These are the container + classes that hold various Octave data types like struct + numerical arrays, structure arrays, and cell arrays. + - `parse-tree` + Classes that define the parse tree for the interpreter. + - `corefcn` + statically linked `DEFUN` functions (callable from the + scripting langauge) as well as internal C++ functions used by + the interpreter. + - `dldfcn` + dynamically linked `DEFUN` functions (callable from the + scripting language). If you see `help foo` telling you that + `foo` is defined in `foo.oct`, then `foo.cc` will be found + here and contain the source code. + - `operators` + definitions and template instantiations for operators for all + possible Octave type combinations. + - `template-inst` + some C++ template instantiations. - liboctave -- C++ interfaces to the numerical libraries, Fortran - numerical libraries, various OS facilities, and utility - functions - - array the base Array, NDArray, Matrix, and Sparse classes - - external various numerical libraries (mostly Fortran) - - amos bessel functions - - blas-xtra wrappers for blas functions used in Octave - - daspk large scale differential algebraic equation solver - - dasrt differential algebraic equation solver with root finding - - dassl differential-algebraic system solver - - fftpack subroutines for fast fourier transforms - - lapack-xtra wrappers for lapack functions used in Octave - - odepack ordinary differential equation solver - - ordered-qz code for ordering eigenvalues for QZ factorization - - quadpack subroutines for numerical integration - - ranlib random number generators - - slatec-err slatec error handling library - - slatec-fn various special function subroutines - - numeric C++ numerical algorithms and interfaces to the Fortran - algorithms - - operators code for operators that act on base classes (such as Array) - - system OS-related functions - - util utility and miscellaneous functions +- `libgui` + the graphical user interface of GNU Octave. + - `graphics` + Qt graphics toolkit (OpenGL plotting). + - `kb-layouts` + various files need by the qterminal widget that has been + derived from Konsole. + - `languages` + translation files and list of translators. + - `qterminal` + Qt terminal widget. + - `src` + source files for the GUI + - `icons` + icon files that will be compiled into the executable via a + resource file. + - `m-editor` + source files for the m-file editor. + - `qtinfo` + source files for the Qt texinfo browser. - wrappers C++ wrappers for gnulib functions written in C - - libinterp -- the interpreter itself plus lots of infrastructure - around it. Octave's extensive octave_value class - hierarchy for polymorphically handling all Octave - types is defined here. The built-in functions are - also defined here. - - octave-value the octave_value class hierarchy. These are the - container classes that hold various Octave data - types like struct numerical arrays, structure - arrays, and cell arrays. - - parse-tree Classes that define the parse tree for the - interpreter - - corefcn statically linked DEFUN functions (callable from - the scripting langauge) as well as internal C++ - functions used by the interpreter. - - dldfcn dynamically linked DEFUN functions (callable - from the scripting language). If you see "help - foo" telling you that foo is defined in foo.oct, - then foo.cc will be found here and contain the - source code. - - operators definitions and template instantiations for - operators for all possible Octave type - combinations - - template-inst some C++ template instantiations - - - libgui -- the graphical user interface of GNU Octave - - graphics Qt graphics toolkit (OpenGL plotting) - - kb-layouts various files need by the qterminal widget that has - been derived from Konsole - - languages translation files and list of translators - - qterminal Qt terminal widget - - src source files for the GUI +- `m4` m4 scripts used by configure during the build process. - icons icon files that will be compiled into the - executable via a resource file - - m-editor source files for the m-file editor - - qtinfo source files for the Qt texinfo browser - - - m4 -- m4 scripts used by configure during the build process - - - scripts -- functions written in the Octave language - - @ftp ftp object class - - +containers container classes (Map) - - audio play and record sound files (system dependent) - - deprecated older deprecated functions - - elfun elementary mathematical functions - - general utility functions - - geometry geometry algorithms - - gui User-Interface (UI) functions - - help help subsystem functions - - image image processing - - io input/output functions - - java java/Octave interface - - linear-algebra linear algebra - - miscellaneous stuff that doesn't fit anywhere else - - ode Ordinary Differential Equations - - optimization zero finders and minimizers +- `scripts` functions written in the Octave language. + - `@ftp` ftp object class + - `+containers` container classes (Map) + - `audio` play and record sound files (system dependent) + - `deprecated` older deprecated functions + - `elfun` elementary mathematical functions + - `general` utility functions + - `geometry` geometry algorithms + - `gui` User-Interface (UI) functions + - `help` help subsystem functions + - `image` image processing + - `io` input/output functions + - `java` java/Octave interface + - `linear-algebra` linear algebra + - `miscellaneous` stuff that doesn't fit anywhere else + - `ode` Ordinary Differential Equations + - `optimization` zero finders and minimizers + - `path` functions for path manipulation + - `pkg` the package manager + - `plot` plotting functions + - `polynomial` polynomial manipulation + - `prefs` user-defined preferences + - `profiler` code profiler for performance + - `set` set manipulation + - `signal` signal processing + - `sparse` sparse matrix support + - `specfun` special mathematical functions + - `special-matrix` functions for generating special types of matrices + - `startup` initialization functions + - `statistics` statistical functions, distributions, and tests + - `strings` character string manipulation + - `testfun` unit testing + - `time` time and date functions - path functions for path manipulation - - pkg the package manager - - plot plotting functions - - polynomial polynomial manipulation - - prefs user-defined preferences - - profiler code profiler for performance - - set set manipulation - - signal signal processing - - sparse sparse matrix support - - specfun special mathematical functions - - special-matrix functions for generating special types of matrices +- `src` + code for the actual executables that are created. This includes + `octave`, `octave-cli`, `octave-gui`, as well as `mkoctfile`. - startup initialization functions - - statistics statistical functions, distributions, and tests - - strings character string manipulation - - testfun unit testing - - time time and date functions - - - src -- code for the actual executables that are created. This - includes octave, octave-cli, octave-gui, as well as - mkoctfile. - - - test -- tests for the interpreter - - *.tst fixed tests for the interpreter - - fntests.m script to run function tests embedded in C++ and - .m files +- `test` + tests for the interpreter. + - `*.tst` + fixed tests for the interpreter. + - `fntests.m` + script to run function tests embedded in C++ and .m files. ################################################################################ @@ -361,7 +319,7 @@ You should have received a copy of the GNU General Public License along with Octave; see the file COPYING. If not, see -. +. This file was adapted for Octave from the HACKING file that is part of @@ -383,4 +341,4 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program. If not, see . + along with this program. If not, see . diff -r 312c00dd723a -r 7ff6daa6b558 src/main.in.cc --- a/src/main.in.cc Fri Oct 20 12:11:58 2017 -0400 +++ b/src/main.in.cc Sun Oct 22 00:00:05 2017 +0200 @@ -417,21 +417,3 @@ return retval; } - -/*! -@mainpage Source code documentation for GNU Octave - -GNU Octave is a high-level language, primarily intended for numerical -computations. It provides a convenient interactive command line -interface for solving linear and nonlinear problems numerically, and -for performing other numerical experiments. It may also be used as a -batch-oriented language for data processing. - -GNU Octave is free software. You may redistribute it and/or modify it -under the terms of the GNU -General Public License as published by the Free Software Foundation. - -This is the developer documentation for Octave's own source code. It is -intended to help for hacking Octave. It may also be useful for -understanding the Octave API when writing your own .oct files. -*/