Mercurial > hg > octave-nkf
annotate PROJECTS @ 10677:21defab4207c
make strrep not skipping overlaps by default, allow an option in both strfind/strrep
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Wed, 02 Jun 2010 10:12:47 +0200 |
parents | b4d2080b6df7 |
children | 83a37dc986f8 |
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 |
10527
b4d2080b6df7
Replace nzmax by nnz as needed
David Bateman <dbateman@free.fr>
parents:
9213
diff
changeset
|
64 * Improve QR fqctorization by replace CXSPARSE code with SPQR code, and make |
b4d2080b6df7
Replace nzmax by nnz as needed
David Bateman <dbateman@free.fr>
parents:
9213
diff
changeset
|
65 the linear solve return 2-norm solutions for ill-conditioned matrices |
b4d2080b6df7
Replace nzmax by nnz as needed
David Bateman <dbateman@free.fr>
parents:
9213
diff
changeset
|
66 based on this new code |
b4d2080b6df7
Replace nzmax by nnz as needed
David Bateman <dbateman@free.fr>
parents:
9213
diff
changeset
|
67 |
5610 | 68 * Implement fourth argument to the sprand and sprandn, and addition |
69 arguments to sprandsym that the leading brand implements. | |
5164 | 70 |
5282 | 71 * Sparse logical indexing in idx_vector class so that something like |
10527
b4d2080b6df7
Replace nzmax by nnz as needed
David Bateman <dbateman@free.fr>
parents:
9213
diff
changeset
|
72 'a=sprandn(1e6,1e6,1e-6); a(a<1) = 0' won't cause a memory overflow. |
5164 | 73 |
74 * Other missing Functions | |
75 - symmmd Superseded by symamd | |
76 - colmmd Superseded by colamd | |
77 - cholinc | |
6627 | 78 - bicg Can this be taken from octave-forge? |
5164 | 79 - gmres |
80 - lsqr | |
81 - minres | |
82 - qmr | |
83 - symmlq | |
84 | |
2330 | 85 ------- |
86 Strings: | |
87 ------- | |
88 | |
2789 | 89 * Improve performance of string functions, particularly for |
90 searching and replacing. | |
91 | |
2330 | 92 * Make find work for strings. |
93 | |
2378 | 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 | |
2330 | 101 ---------------- |
102 Other Data Types: | |
103 ---------------- | |
104 | |
105 * Template functions for mixed-type ops. | |
106 | |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7787
diff
changeset
|
107 * Convert other functions for use with the floating point type |
8921 | 108 including quad, dasrt, daspk, etc. |
7789
82be108cc558
First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents:
7787
diff
changeset
|
109 |
2330 | 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 | |
3162 | 135 * Allow customization of the debug prompt. |
136 | |
2601 | 137 * Fix the parser so that |
138 | |
3081 | 139 if (expr) 'this is a string' end |
140 | |
141 is parsed as IF expr STRING END. | |
142 | |
6628 | 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). | |
2330 | 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 | |
4325 | 156 * Allow arbitrary lower bounds for array indexing. |
2330 | 157 |
4325 | 158 * Improve performance of recursive function calls. |
2330 | 159 |
160 * Improve the way ignore_function_time_stamp works to allow | |
3167 | 161 selecting by individual directories or functions. |
2330 | 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 | |
3162 | 171 * make parser do more semantic checking, continue after errors when |
172 compiling functions, etc. | |
173 | |
2330 | 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 () | |
3758 | 195 save_prefer_column_vectors = prefer_column_vectors; |
2330 | 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? | |
2862 | 225 |
2746 | 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. | |
2439 | 229 |
2799 | 230 * On systems that support matherr(), make it possible for users to |
231 enable the printing of warning messages. | |
232 | |
2862 | 233 * Make it possible to mark variables and functions as read-only. |
234 | |
3092 | 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 | |
5228 | 239 * Use nanosleep instead of usleep if it is available? Apparently |
240 nanosleep is to be preferred over usleep on Solaris systems. | |
241 | |
9213 | 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 | |
2330 | 252 ------- |
253 History: | |
254 ------- | |
255 | |
256 * Add an option to allow saving input from script files in the | |
257 history list. | |
258 | |
3092 | 259 * The history command should accept two numeric arguments to |
260 indicate a range of history entries to display, save or read. | |
261 | |
5026 | 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 | |
2330 | 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 | |
8921 | 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. | |
2473 | 278 |
2330 | 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 | |
3069 | 287 * Create a docs-only distribution? |
288 | |
2330 | 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 | |
3130 | 308 * Clean up help stuff. |
309 | |
2330 | 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 | |
8921 | 342 * C++ namespace for Octave library functions. |
343 | |
2475 | 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 | |
2330 | 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 | |
2454 | 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 | |
2330 | 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 | |
9031
1052a66078cf
Documentation cleanup of top-level Octave directory (READMEs, INSTALL)
Rik <rdrider0-list@yahoo.com>
parents:
8921
diff
changeset
|
402 Octave i.e., the all big files, the user see as one big array or |
2330 | 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 | |
3136 | 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 | |
9031
1052a66078cf
Documentation cleanup of top-level Octave directory (READMEs, INSTALL)
Rik <rdrider0-list@yahoo.com>
parents:
8921
diff
changeset
|
415 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
|
416 between gdb and octave. We are often managing very large arrays |
3136 | 417 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
|
418 the help of octave at the algorithm development stages. Assume |
3136 | 419 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
|
420 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
|
421 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
|
422 log-log plot of the spectral density. I'm facing similar |
3136 | 423 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
|
424 matlab/octave, and then rewrite into c. It might be so much |
3136 | 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 | |
2789 | 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 | |
2330 | 435 ------ |
436 Always: | |
437 ------ | |
438 | |
439 * Squash bugs. | |
440 | |
441 --30-- | |
3162 | 442 </pre> |
443 </html> |