home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / octave-1.1.1p1-base.tgz / octave-1.1.1p1-base.tar / fsf / octave / PROJECTS < prev    next >
Text File  |  1995-02-20  |  10KB  |  303 lines

  1. Octave PROJECTS                                          -*- text -*-
  2. ===============
  3.  
  4. Check with bug-octave@che.utexas.edu for a possibly more current copy.
  5. Also, if you start working steadily on a project, please let
  6. bug-octave@che.utexas.edu know.  We might have information that could
  7. help you; we'd also like to send you the GNU coding standards.
  8.  
  9. This list is not exclusive -- there are many other things that might
  10. be good projects, but it might instead be something we already have,
  11. so check with bug-octave@che.utexas.edu before you start.
  12.  
  13.  
  14.   * Improve the Texinfo Documentation for the interpreter.  It would
  15.     be useful to have lots more examples, to not have so many forward
  16.     references, and to not have very many simple lists of functions.
  17.  
  18.   * Texinfo documentation for the C++ classes.
  19.  
  20.   * Make `help -i' try to find a whole word match first.
  21.  
  22.   * Improve help messages for operators and keywords in help.cc.
  23.  
  24.   * Make index entries more consistent to improve behavior of `help -i'.
  25.  
  26.   * Improve logm, and sqrtm.
  27.  
  28.   * Improve complex mapper functions.
  29.  
  30.   * Handle complex values in fread and fwrite.
  31.  
  32.   * Make LEXICAL_ERROR have a value that is the error message for
  33.     parse_error() to print?
  34.  
  35.   * Implement the echo command.
  36.  
  37.   * Make the cutoff point for changing to packed storage a
  38.     user-preference variable with default value 8192.
  39.  
  40.   * Share more code among the various *_options functions.
  41.  
  42.   * Make it possible to clear dynamically loaded functions.
  43.  
  44.   * Improved string handling.
  45.  
  46.   * Make it possible to get a list of the names of the elements in a
  47.     structure. 
  48.  
  49.   * Add a run-time alias mechanism that would allow things like
  50.  
  51.       alias fun function_with_a_very_long_name 
  52.  
  53.     so that `function_with_a_very_long_name' could be invoked as
  54.     `fun'.
  55.  
  56.   * Fix all function files to check for bogus inputs (wrong number or
  57.     types of input arguments, wrong number of output arguments).
  58.  
  59.   * Support for lp_solve for linear programming problems.
  60.  
  61.   * Free QP solver.
  62.  
  63.   * Free NLP solver.
  64.  
  65.   * Support for sparse matrices.
  66.  
  67.   * Fix CollocWt to handle Laguerre polynomials.  Make it easy to
  68.     extend it to other polynomial types.
  69.  
  70.   * Add optional arguments to colloc so that it's not restricted to
  71.     Legendre polynomials.
  72.  
  73.   * Handle arguments for text-style functions in a consistent manner.
  74.  
  75.   * More C++/Fortran cleanups.
  76.  
  77.   * Translate Fortran routines to C/C++, or replace them entirely.
  78.  
  79.   * It is likely that there are still some memory leaks.  Hunt then down
  80.     and plug them. 
  81.  
  82.   * Too much time is spent allocating and freeing memory.  What can be
  83.     done to improve performance?
  84.  
  85.   * Error output from Fortran code is ugly.  Something should be done to
  86.     make it look better.
  87.  
  88.   * It would be nice if output from the Fortran routines could be
  89.     passed through the pager.
  90.  
  91.   * In an X11 or other windowing environment, allow the user to pop up
  92.     windows for menus and other purposes.  A good place to start might
  93.     be Tk, as long as Tcl is avoided.
  94.  
  95.   * Add a way to handle events, like alarms, mouse clicks, etc.
  96.  
  97.   * Implement some form of constant folding in the parser.  This
  98.     shouldn't be too difficult for simple binary and unary operations.
  99.  
  100.   * Remove the buffer size limit in octave_read() in input.cc.
  101.  
  102.   * Allow users to force built-in constants to be writable.  Make
  103.     reasonable things happen if builtin-in constants are declared
  104.     global and then redefined.
  105.  
  106.   * Either do something reasonable or remove all support for Inf and
  107.     NaN for machines without IEEE math.
  108.  
  109.   * Make ascii load and save work for Inf and NaN.
  110.  
  111.   * Make load work to read files that contain numbers only, and put
  112.     the values in a matrix named after the file.
  113.  
  114.   * Make load and save work for structures.
  115.  
  116.   * Make load and save look for <file>.mat if only given <file>.
  117.  
  118.   * Save image data in binary format to save space.
  119.  
  120.   * Make rand and randn work like they do in Matlab 4.x.
  121.  
  122.   * Fix eig to also be able to solve the generalized eigenvalue
  123.     problem, and to solve for eigenvalues and eigenvectors without
  124.     performing a balancing step first.
  125.  
  126.   * Improve assignment of [] so that Octave will handle cases like
  127.  
  128.       a = rand(4);
  129.       a(2,[1,2,3,4]);
  130.       a(2,[3,1,4,2]);
  131.  
  132.     not just a(2,:).  They are all equivalent, so we should allow all
  133.     of them.  It would also be nice to handle special cases in the
  134.     fortran_style_matrix_assignment function, but that is harder.
  135.  
  136.   * Handle arrays with more than two dimensions.
  137.  
  138.   * Eliminate mx-kludge.{h,cc} in favor of MArray.{h,cc}.  (As of
  139.     g++ 2.5.7, this appears to require bug fixes for g++.)
  140.  
  141.   * Move rand, eye, etc., functions to the matrix classes.
  142.  
  143.   * Only include config.h in files that actually need it, instead of
  144.     including it in every .cc file.  Unfortunately, this might not be
  145.     so easy to figure out.
  146.  
  147.   * Fix configure to cache values determined using non-standard tests.
  148.  
  149.   * Adapt the newer matlab-mode.el file to work with Octave.
  150.  
  151.   * Consider making assignment statements like
  152.  
  153.       M (i_idx, j_idx) = RHS
  154.  
  155.     produce the value of RHS instead of the value of M.
  156.  
  157.   * Consider making it possible to specify an empty matrix with a
  158.     syntax like [](e1, e2).  Of course at least one of the expressions
  159.     must be zero...
  160.  
  161.   * Make it possible to tie arbitrary input and output streams
  162.     together, similar to the way iostreams can be tied together.
  163.  
  164.   * Functions:
  165.  
  166.      - fgetl
  167.  
  168.   * Eliminate force_numeric and make_numeric functions.
  169.  
  170.   * Is Matrix::fortran_vec() really necessary?
  171.  
  172.   * print_usage() should set error_state in most cases?
  173.  
  174.   * Move DEFVARs to be in the files that define functions that are
  175.     related to the variables.
  176.  
  177.   * Make statements like this
  178.  
  179.       foo bar baz
  180.  
  181.     turn into function calls like this:
  182.  
  183.       foo ("bar", "baz")
  184.  
  185.     This is pretty ugly and introduces some conflicts.
  186.  
  187.   * Make it possible to use text-style function names as variables.
  188.  
  189.   * Add a command that works like bash's `builtin' command.
  190.  
  191.   * Use SLList for the tree_matrix class.
  192.  
  193.   * Use newer readline version.
  194.  
  195.   * Make it possible for readline to complete based on text already
  196.     typed.  For example, 
  197.  
  198.       pl <up-arrow>
  199.  
  200.     matches to the previous command that began with `pl'.
  201.  
  202.   * Handle comments in parse trees for use with the type command.
  203.  
  204.   * Improved sort function.
  205.  
  206.   * Improved set of tests:
  207.  
  208.     -- Tests for various functions.  Would be nice to have a test file
  209.        corresponding to every function.
  210.  
  211.     -- Tests for element by element operators:
  212.          +  -  .*  ./  .\  .^  |  &  <  <=  ==  >=  >  !=  ! 
  213.  
  214.     -- Tests for boolean operators:  &&  ||
  215.  
  216.     -- Tests for other operators:  *  /  \  '  .'
  217.  
  218.     -- Tests from bug reports.
  219.  
  220.     -- Tests for indexed assignment.  Need to consider the following:
  221.  
  222.        o fortran-style indexing
  223.        o zero-one indexing
  224.        o assignment of empty matrix as well as values
  225.        o resizing
  226.  
  227.   * Demo files.
  228.  
  229.   * Clean up eye, eval, feval, keyboard, input, ones, zeros.
  230.  
  231.   * Some sort of blurb (2-3 pages) describing Octave in a reasonably
  232.     coherent way, where to get it etc., perhaps formatted pretty,
  233.     i.e. not just text.  Maybe start with the latest Announce file.
  234.  
  235.   * GNU coding standards:
  236.  
  237.     -- Add a `Makefile' target to the Makefiles.
  238.     -- Comments on #else and #endif preprocessor commands.
  239.     -- Change error message format to match standards everywhere.
  240.  
  241.   * Support for FSQP.
  242.  
  243.   * Convert FSQP style NLP statement to NPSOL style.
  244.  
  245.   * Convert NPSOL style NLP statement to FSQP style.
  246.     - Look for linear equality constraints, extract corresponding rows
  247.     of C.  The rest are inequality constraints.
  248.     - Look for Nonlinear equality constraints and set up a vector of
  249.     pointers for shuffling.
  250.     - Transform lb <= C*x <= ub, lb != ub, to C*x - ub <= 0 and
  251.     lb - C*x <= 0.  Likewise for lb <= g(x) <= ub.
  252.     - Call FSQP.
  253.  
  254.   * Optional inputs for fsqp.
  255.  
  256.   * If possible, make economy QR factorization actually take advantage
  257.     of the form of the result instead of just dropping columns.
  258.     Lapack doesn't appear to do this yet.
  259.  
  260.   * The ability to transparently handle very large files:
  261.  
  262.     Juhana K Kouhia <kouhia@nic.funet.fi> wrote:
  263.  
  264.       If I have a one-dimensional signal data with the size 400
  265.       Mbytes, then what are my choises to operate with it:
  266.  
  267.        * I have to split the data
  268.        * Octave has a virtual memory on its own and I don't have to
  269.          worry about the splitting.
  270.  
  271.       If I split the data, then my easily programmed processing
  272.       programs will become hard to program.
  273.  
  274.       If possible, I would like to have the virtual memory system in
  275.       Octave i.e. the all big files, the user see as one big array or
  276.       such.  There could be several user selectable models to do the
  277.       virtual memory depending on what kind of data the user have (1d,
  278.       2d) and in what order they are processed (stream or random
  279.       access).
  280.  
  281.     Perhaps this can be done entirely with a library of M-files.
  282.  
  283.   * Fix interface with gnuplot to wait for gnuplot to output any text
  284.     before octave returns a prompt.  Possible by implementing two
  285.     way communication between gnuplot and Octave.
  286.  
  287.   * Make gsave (and possbly gload) work.  Implement gsave by having it
  288.     also alter the plot command to not use temporary files (perhaps
  289.     with some user-specified template for naming them) and then
  290.     sending a `save' command to gnuplot.
  291.  
  292.   * Make it possible for the GNU info reader to be called as a
  293.     separate sub-process instead of linking it directly in the Octave
  294.     binary.
  295.  
  296.   * Make the arrow keys work in the info reader.
  297.  
  298.   * Make the interpreter run faster.
  299.  
  300.   * Squash bugs.
  301.  
  302.                                 --30--
  303.