comparison PROJECTS @ 12342:83a37dc986f8

Change PROJECTS to point to list on Wiki.
author Rik <octave@nomad.inbox5.com>
date Sat, 05 Feb 2011 12:01:50 -0800
parents b4d2080b6df7
children 7b153b1af227
comparison
equal deleted inserted replaced
12341:402456ba3f61 12342:83a37dc986f8
1 <html> 1 Octave PROJECTS
2 <pre>
3 Octave PROJECTS -*- text -*-
4 =============== 2 ===============
5 3
6 Look in the Octave source archive on Savannah for a possibly more 4 A list of proposed projects is maintained at:
7 current copy. Also, if you start working steadily on a project, 5
8 please let maintainers@octave.org know. We might have information 6 http://wiki.octave.org/wiki.pl?Projects
9 that could help you. You should also read the Contributing Guidelines 7
8 If you start working steadily on a project, please let
9 octave-maintainers@octave.org know. We might have information that
10 could help you. You should also read the Contributing Guidelines
10 chapter in the Octave manual. 11 chapter in the Octave manual.
11
12 This list is not exclusive -- there are many other things that might
13 be good projects, but it might instead be something we already have.
14 Also, some of the following items may not actually be considered good
15 ideas now. So please check with maintainers@octave.org before you
16 start working on some large project.
17
18
19 ---------
20 Numerical:
21 ---------
22
23 * Improve logm, and sqrtm.
24
25 * Improve complex mapper functions. See W. Kahan, ``Branch Cuts for
26 Complex Elementary Functions, or Much Ado About Nothing's Sign
27 Bit'' (in The State of the Art in Numerical Analysis, eds. Iserles
28 and Powell, Clarendon Press, Oxford, 1987) for explicit
29 trigonometric formulae.
30
31 * Make functions like gamma() return the right IEEE Inf or NaN
32 values for extreme args or other undefined cases.
33
34 * Improve sqp.
35
36 * Fix CollocWt to handle Laguerre polynomials. Make it easy to
37 extend it to other polynomial types.
38
39 * Add optional arguments to colloc so that it's not restricted to
40 Legendre polynomials.
41
42 * Fix eig to also be able to solve the generalized eigenvalue
43 problem, and to solve for eigenvalues and eigenvectors without
44 performing a balancing step first.
45
46 * Move rand, eye, xpow, xdiv, etc., functions to the matrix classes.
47
48 * Use octave_allocator for memory management in Array classes once
49 g++ supports static member templates.
50
51 * Improve design of ODE, DAE, classes.
52
53 * Make QR more memory efficient for large matrices when not all the
54 columns of Q are required (apparently this is not handled by the
55 lapack code yet).
56
57 ---------------
58 Sparse Matrices:
59 ---------------
60
61 * Improve QR factorization functions, using idea based on CSPARSE
62 cs_dmsol.m
63
64 * Improve QR fqctorization by replace CXSPARSE code with SPQR code, and make
65 the linear solve return 2-norm solutions for ill-conditioned matrices
66 based on this new code
67
68 * Implement fourth argument to the sprand and sprandn, and addition
69 arguments to sprandsym that the leading brand implements.
70
71 * Sparse logical indexing in idx_vector class so that something like
72 'a=sprandn(1e6,1e6,1e-6); a(a<1) = 0' won't cause a memory overflow.
73
74 * Other missing Functions
75 - symmmd Superseded by symamd
76 - colmmd Superseded by colamd
77 - cholinc
78 - bicg Can this be taken from octave-forge?
79 - gmres
80 - lsqr
81 - minres
82 - qmr
83 - symmlq
84
85 -------
86 Strings:
87 -------
88
89 * Improve performance of string functions, particularly for
90 searching and replacing.
91
92 * Make find work for strings.
93
94 * Consider making octave_print_internal() print some sort of text
95 representation for unprintable characters instead of sending them
96 directly to the terminal. (But don't do this for fprintf!)
97
98 * Consider changing the default value of `string_fill_char' from SPC
99 to NUL.
100
101 ----------------
102 Other Data Types:
103 ----------------
104
105 * Template functions for mixed-type ops.
106
107 * Convert other functions for use with the floating point type
108 including quad, dasrt, daspk, etc.
109
110 ------------
111 Input/Output:
112 ------------
113
114 * Make fread and fwrite work for complex data. Iostreams based
115 versions of these functions would also be nice, and if you are
116 working on them, it would be good to support other size
117 specifications (integer*2, etc.).
118
119 * Move some pr-output stuff to liboctave.
120
121 * Make the cutoff point for changing to packed storage a
122 user-preference variable with default value 8192.
123
124 * Complain if there is not enough disk space available (I think
125 there is simply not enough error checking in the code that handles
126 writing data).
127
128 * Make it possible to tie arbitrary input and output streams
129 together, similar to the way iostreams can be tied together.
130
131 -----------
132 Interpreter:
133 -----------
134
135 * Allow customization of the debug prompt.
136
137 * Fix the parser so that
138
139 if (expr) 'this is a string' end
140
141 is parsed as IF expr STRING END.
142
143 * Clean up functions in input.cc that handle user input (there
144 currently seems to be some unnecessary duplication of code and it
145 seems overly complex).
146
147 * Consider allowing an arbitrary property list to be attached to any
148 variable. This could be a more general way to handle the help
149 string that can currently be added with `document'.
150
151 * Allow more command line options to be accessible as built-in
152 variables (--echo-commands, etc.).
153
154 * Make the interpreter run faster.
155
156 * Allow arbitrary lower bounds for array indexing.
157
158 * Improve performance of recursive function calls.
159
160 * Improve the way ignore_function_time_stamp works to allow
161 selecting by individual directories or functions.
162
163 * Add a command-line option to tell Octave to just do syntax
164 checking and not execute statements.
165
166 * Clean up symtab and variable stuff.
167
168 * Input stream class for parser files -- must manage buffers for
169 flex and context for global variable settings.
170
171 * make parser do more semantic checking, continue after errors when
172 compiling functions, etc.
173
174 * Make LEXICAL_ERROR have a value that is the error message for
175 parse_error() to print?
176
177 * Add a run-time alias mechanism that would allow things like
178
179 alias fun function_with_a_very_long_name
180
181 so that `function_with_a_very_long_name' could be invoked as
182 `fun'.
183
184 * Allow local changes to variables to be written more compactly than
185 is currently possible with unwind_protect. For example,
186
187 function f ()
188 local prefer_column_vectors = something;
189 ...
190 endfunction
191
192 would be equivalent to
193
194 function f ()
195 save_prefer_column_vectors = prefer_column_vectors;
196 unwind_protect
197 prefer_column_vectors = something;
198 ...
199 unwind_protect_cleanup
200 prefer_column_vectors = save_prefer_column_vectors;
201 end_unwind_protect
202 endfunction
203
204 * Fix all function files to check for bogus inputs (wrong number or
205 types of input arguments, wrong number of output arguments).
206
207 * Handle options for built-in functions more consistently.
208
209 * Too much time is spent allocating and freeing memory. What can be
210 done to improve performance?
211
212 * Error output from Fortran code is ugly. Something should be done to
213 make it look better.
214
215 * It would be nice if output from the Fortran routines could be
216 passed through the pager.
217
218 * Attempt to recognize common subexpressions in the parser.
219
220 * Consider making it possible to specify an empty matrix with a
221 syntax like [](e1, e2). Of course at least one of the expressions
222 must be zero...
223
224 * Is Matrix::fortran_vec() really necessary?
225
226 * Rewrite whos and the symbol_record_info class. Write a built-in
227 function that gives all the basic information, then write who and
228 whos as M-files.
229
230 * On systems that support matherr(), make it possible for users to
231 enable the printing of warning messages.
232
233 * Make it possible to mark variables and functions as read-only.
234
235 * Make it possible to write a function that gets a reference to a
236 matrix in memory and change one or more elements without
237 generating a second copy of the data.
238
239 * Use nanosleep instead of usleep if it is available? Apparently
240 nanosleep is to be preferred over usleep on Solaris systems.
241
242 --------
243 Graphics:
244 --------
245
246 * Correctly handle case where DISPLAY is unset. Provide
247 --no-window-system or --nodisplay (?) option. Provide
248 --display=DISPLAY option? How will this work with gnuplot (i.e.,
249 how do we know whether gnuplot requires an X display to display
250 graphics)?
251
252 -------
253 History:
254 -------
255
256 * Add an option to allow saving input from script files in the
257 history list.
258
259 * The history command should accept two numeric arguments to
260 indicate a range of history entries to display, save or read.
261
262 * Avoid writing the history file if the history list has not
263 changed.
264
265 * Avoid permission errors if the history file cannot be opened for
266 writing.
267
268 * Fix history problems -- core dump if multiple processes are
269 writing to the same history file?
270
271 ------------------------------
272 Configuration and Installation:
273 ------------------------------
274
275 * Split config.h into a part for Octave-specific configuration
276 things (this part can be installed) and the generic HAVE_X type of
277 configure information that should not be installed.
278
279 * Makefile changes:
280 -- eliminate for loops
281 -- define shell commands or eliminate them
282 -- consolidate targets
283
284 * Make it possible to configure so that installed binaries and
285 shared libraries are stripped.
286
287 * Create a docs-only distribution?
288
289 ------------------------------
290 Documentation and On-Line Help:
291 ------------------------------
292
293 * Document new features.
294
295 * Improve the Texinfo Documentation for the interpreter. It would
296 be useful to have lots more examples, to not have so many forward
297 references, and to not have very many simple lists of functions.
298
299 * The docs should mention something about efficiency and that using
300 array operations is almost always a good idea for speed.
301
302 * Texinfo documentation for the C++ classes.
303
304 * Make index entries more consistent to improve behavior of `help -i'.
305
306 * Make `help -i' try to find a whole word match first.
307
308 * Clean up help stuff.
309
310 * Demo files.
311
312 -----
313 Tests:
314 -----
315
316 * Improved set of tests:
317
318 -- Tests for various functions. Would be nice to have a test file
319 corresponding to every function.
320
321 -- Tests for element by element operators:
322 + - .* ./ .\ .^ | & < <= == >= > != !
323
324 -- Tests for boolean operators: && ||
325
326 -- Tests for other operators: * / \ ' .'
327
328 -- Tests from bug reports.
329
330 -- Tests for indexed assignment. Need to consider the following:
331 o fortran-style indexing
332 o zero-one indexing
333 o assignment of empty matrix as well as values
334 o resizing
335
336 * Tests for all internal functions.
337
338 -----------
339 Programming:
340 -----------
341
342 * C++ namespace for Octave library functions.
343
344 * Better error messages for missing operators?
345
346 * Eliminate duplicate enums in pt-exp.cc, pt-const.cc, and ov.cc.
347
348 * Handle octave_print_internal() stuff at the liboctave level. Then
349 the octave_value classes could just call on the print() methods
350 for the underlying classes.
351
352 * As much as possible, eliminate explicit checks for the types of
353 octave_value objects so that user-defined types will automatically
354 do the right thing in more cases.
355
356 * Only include config.h in files that actually need it, instead of
357 including it in every .cc file. Unfortunately, this might not be
358 so easy to figure out.
359
360 * GNU coding standards:
361
362 -- Add a `Makefile' target to the Makefiles.
363 -- Comments on #else and #endif preprocessor commands.
364 -- Change error message format to match standards everywhere.
365
366 * Eliminate more global variables.
367
368 * Move procstream to liboctave.
369
370 * Use references and classes in more places.
371
372 * Share more code among the various *_options functions.
373
374 -------------
375 Miscellaneous:
376 -------------
377
378 * Implement some functions for interprocess communication: bind,
379 accept, connect, gethostbyname, etc.
380
381 * The installation process should also install octave.el. This
382 needs to detect the appropriate Emacs binary to use to
383 byte-compile the .el file. Following GNU Emacs philosophy,
384 installation would be into $(prefix)/share/emacs/site-lisp by
385 default, but it should be selectable.
386
387 * The ability to transparently handle very large files:
388
389 Juhana K Kouhia <kouhia@nic.funet.fi> wrote:
390
391 If I have a one-dimensional signal data with the size 400
392 Mbytes, then what are my choices to operate with it:
393
394 * I have to split the data
395 * Octave has a virtual memory on its own and I don't have to
396 worry about the splitting.
397
398 If I split the data, then my easily programmed processing
399 programs will become hard to program.
400
401 If possible, I would like to have the virtual memory system in
402 Octave i.e., the all big files, the user see as one big array or
403 such. There could be several user selectable models to do the
404 virtual memory depending on what kind of data the user have (1d,
405 2d) and in what order they are processed (stream or random
406 access).
407
408 Perhaps this can be done entirely with a library of M-files.
409
410 * An interface to gdb.
411
412 Michael Smolsky <fnsiguc@weizmann.weizmann.ac.il> wrote:
413
414 I was thinking about a tool, which could be very useful for me
415 in my numerical simulation work. It is an interconnection
416 between gdb and octave. We are often managing very large arrays
417 of data in our fortran or c codes, which might be studied with
418 the help of octave at the algorithm development stages. Assume
419 you're coding, say, wave equation. And want to debug the
420 code. It would be great to pick some array from the memory of
421 the code you're developing, fft it and see the image as a
422 log-log plot of the spectral density. I'm facing similar
423 problems now. To avoid high c-development cost, I develop in
424 matlab/octave, and then rewrite into c. It might be so much
425 easier, if I could off-load a c array right from the debugger
426 into octave, study it, and, perhaps, change some [many] values
427 with a convenient matlab/octave syntax, similar to
428 a(:,50:250)=zeros(100,200), and then store it back into the
429 memory of my c code.
430
431 * Add a definition to lgrind so that it supports Octave.
432 (See http://www.tex.ac.uk/tex-archive/support/lgrind/ for more
433 information about lgrind.)
434
435 ------
436 Always:
437 ------
438
439 * Squash bugs.
440
441 --30--
442 </pre>
443 </html>