Mercurial > octave-nkf
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> |