Octave PROJECTS                                          -*- text -*-
===============

Check with bug-octave@che.utexas.edu for a possibly more current copy.
Also, if you start working steadily on a project, please let
bug-octave@che.utexas.edu know. We might have information that could
help you; we'd also like to send you the GNU coding standards.

This list is not exclusive -- there are many other things that might
be good projects, but it might instead be something we already have,
so check with bug-octave@che.utexas.edu before you start.


These should be done before 1.0 is released:
-------------------------------------------

  * Duplictate symbols for recursive function calls.

  * Add some sort of unwind-protect scheme so we don't have problems
    with interrupts in function evaluations.

  * Better plotting commands.

  * Fix eig to also be able to solve the generalized eigenvalue
    problem, and to solve for eigenvalues and eigenvectors without
    performing a balancing step first.

  * Finish implementation of save.  Handle case with no arguments --
    save all the variables in the current symbol table.

  * Solve least squares problem if system of linear equations is not
    square.

  * Make assignment of [] work.

  * Add {f,s,}scanf functions.  Since variables are passed by value,
    make them return multiple values:

      [a, b, c] = fscanf ('file', '%s%d%f');

  * Fix max and min to handle two return values.

  * Determine better default tolerances for lsode, dassl, fsolve, etc.

  * Command editing like the ksh fc(1) command.  Steal from bash.

  * Add a way to execute shell commands and get results back.

  * Solve quadratic programs with QPSOL.

  * More functions to implement:
    - atan2        - chol
    - delete/rm    - dir/ls
    - fft          - pinv
    - qz           - type
    - what         - whos

  * Fix the signal type mismatch stuff in gnuplot.

  * Either do something reasonable or remove all support for Inf and
    NaN for machines without IEEE math.

  * Do something better than just FAIL in the matrix classes.

  * Arrange for builtin functions to be called with argv[0] == function
    name.  Same for user-defined functions (add another variable like
    nargin and nargout to hold the function name).

  * Better help.
    - Better diagnostics.  Use a consistent form for all error messages.
    - Better help strings for builtin operators.
    - Snarf help strings from function files as they are read.

  * TeXinfo Documentation.

  * A better man page (this is only a secondary goal -- TeXinfo
    documentation is what's really needed).


These are things that would be nice to have:
-------------------------------------------

  * Support for FSQP.

  * Convert FSQP style NLP statement to NPSOL style.

  * Convert NPSOL style NLP statement to FSQP style.
    - Look for linear equality constraints, extract corresponding rows
	of C.  The rest are inequality constraints.
    - Look for Nonlinear equality constraints and set up a vector of
	pointers for shuffling.
    - Transform lb <= C*x <= ub, lb != ub, to C*x - ub <= 0 and
	lb - C*x <= 0.  Likewise for lb <= g(x) <= ub.
    - Call FSQP.

  * Finish adapting the matlab.el file to work with Octave.

  * Use a stack for matrix trees instead of the current cheesy vector hack.

  * Better organization of global variables.

  * The utils.cc file is getting too big?

  * Fix CollocWt to handle Laguerre polynomials.  Make it easy to
    extend it to other polynomial types.

  * Rewrite Matrix classes to make better use of templates and
    derivation.

  * Optional inputs for npsol:
    - npfile    - npoptn

  * Optional inputs for fsolve.

  * More C++/Fortran cleanups.

  * Translate Fortran routines to C/C++, or replace them entirely.

  * Fix lexer to stash line/column info for tokens.  Use this to
    print better run-time error messages.

  * Better output formatting for matrices and complex values.

  * Send usage messages to cout to avoid cerr character buffering?

  * QP solution with QLD (or something better, if available).
    [QLD is probably not good enough -- it will not solve indefinite QPs.]

  * It is likely that there are still some memory leaks.  Hunt then down
    and plug them. 

  * Too much time is spent allocating and freeing memory.  What can be
    done to improve performance?

  * Add an `autoload' function to simplify builtin functions that need
    to look for user-defined functions in M-files.

  * Error output from Fortran code is ugly.  Something should be done to
    make it look better.

  * Add a way to handle events, like alarms, mouse clicks, etc.

  * Add a binary-dist target to the Makefiles (??).

  * Implement some form of constant folding in the parser.  This
    shouldn't be too difficult for simple binary and unary operations.

  * Make load work for Matlab files.

  * Remove the buffer size limit in octave_read() in input.cc.

Always:

  * Squash bugs.

                                --30--
