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:
-------------------------------------------

  * Improve expm, logm, and sqrtm.

  * Improve complex mapper functions.

  * Fix max and min to handle two return values.

  * More functions to implement:
    - atan2        - chol
    - delete/rm    - pinv
    - qz           - type
    - what         - whos
    - erf/erfc

  * Standardize help and usage strings for builtin functions and variables.

  * Better help strings for builtin operators.

  * Texinfo Documentation.

  * Make assignment of [] work.


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

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

  * Support for lp_solve for linear programming problems.

  * 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.

  * Support for sparse matrices.

  * 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).

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

  * Make recursive function calls work.

  * Use unwind-protect to avoid memory leaks in more places.

  * Better organization of global variables.

  * The utils.cc file is getting too big?

  * Optional recursive search of subdirectories for M-files, like TeX
    does for macro files.  [Kurt Hornik <hornik@neuro.tuwien.ac.at>]

  * 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.

  * Use matherr() (or whatever -- this is system dependent) to allow
    users to suppress errors from log(), sqrt(), etc.

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

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

  * 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.

  * 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 files saved by Matlab.

  * Allow save to store data in binary format.

  * Make default precision of ASCII save greater.

  * Allow functions to be loaded dynamically, and allow linking of
    user functions written in C++, C or Fortran.  Some work has been
    done to use dld to do this, but other methods would be considered
    if a consistent interface can be designed.

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

  * Add a generic list type.  Maybe this should really be an
    associative array type like RLaB has.  Look at that to see what it
    is and how it works.

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

  * 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.

  * 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.

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

  * Add optional arguments to colloc so that it's not restricted to
    Legendre polynomials.

  * Fix the code that handles multiple assignments so that the
    following will behave as shown:

      octave:13> function [x, y, z] = f (u, s, v)
      >   x = u;
      >   z = v;
      > end
      octave:13> [a, b, c] = f (1, 2, 3)
      a = 1

      error: `b' undefined

      c = 2

Always:
------

  * Squash bugs.

                                --30--
