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