Mercurial > octave-nkf
comparison PROJECTS @ 6627:37dcb57b80f6
[project @ 2007-05-16 15:02:13 by jwe]
author | jwe |
---|---|
date | Wed, 16 May 2007 15:02:13 +0000 |
parents | 3ef490336b4d |
children | d88d66f8cab6 |
comparison
equal
deleted
inserted
replaced
6626:af16354ea09c | 6627:37dcb57b80f6 |
---|---|
29 | 29 |
30 * Handle complex values in fread and fwrite. | 30 * Handle complex values in fread and fwrite. |
31 | 31 |
32 * Support for lp_solve for linear programming problems. | 32 * Support for lp_solve for linear programming problems. |
33 | 33 |
34 * Free QP solver. | |
35 | |
36 * Free NLP solver. | 34 * Free NLP solver. |
37 | 35 |
38 * Fix CollocWt to handle Laguerre polynomials. Make it easy to | 36 * Fix CollocWt to handle Laguerre polynomials. Make it easy to |
39 extend it to other polynomial types. | 37 extend it to other polynomial types. |
40 | |
41 * Make filter faster (perhaps by calling BLAS functions). | |
42 | 38 |
43 * Add optional arguments to colloc so that it's not restricted to | 39 * Add optional arguments to colloc so that it's not restricted to |
44 Legendre polynomials. | 40 Legendre polynomials. |
45 | 41 |
46 * Fix eig to also be able to solve the generalized eigenvalue | 42 * Fix eig to also be able to solve the generalized eigenvalue |
50 * Move rand, eye, xpow, xdiv, etc., functions to the matrix classes. | 46 * Move rand, eye, xpow, xdiv, etc., functions to the matrix classes. |
51 | 47 |
52 * Use octave_allocator for memory management in Array classes once | 48 * Use octave_allocator for memory management in Array classes once |
53 g++ supports static member templates. | 49 g++ supports static member templates. |
54 | 50 |
55 * Implement the following functions: | |
56 -- ppval -- cross -- dot | |
57 | |
58 * When constructing NLConst (and other) objects, make sure that | 51 * When constructing NLConst (and other) objects, make sure that |
59 there are sufficient checks to ensure that the dimensions all | 52 there are sufficient checks to ensure that the dimensions all |
60 conform. | 53 conform. |
61 | |
62 * Allow parameters to be passed through the call to fsolve() to the | |
63 user-supplied function for Matlab compatibility. Don't place an | |
64 upper limit on the number of arguments. | |
65 | |
66 * Check matrix classes for proper handling of empty matrices. | |
67 | |
68 * Make operations with empty matrices produce empty matrices, for | |
69 compatibility with Matlab (but only if Matlab 5 still does things | |
70 this way). For example: [1, 2] * [] ==> []. | |
71 | 54 |
72 * Improve design of ODE, DAE, classes. | 55 * Improve design of ODE, DAE, classes. |
73 | 56 |
74 * Extend meaning of .* to include v .* M or M .* v (where v is a | 57 * Extend meaning of .* to include v .* M or M .* v (where v is a |
75 column vector with the same number of rows as M) to scale rows of | 58 column vector with the same number of rows as M) to scale rows of |
76 M by elements of v. Similarly, if w is a row vector with as many | 59 M by elements of v. Similarly, if w is a row vector with as many |
77 columns as M, then either w .* M or M .* w scales the columns of | 60 columns as M, then either w .* M or M .* w scales the columns of |
78 M. | 61 M. |
79 | 62 |
80 * Given two vectors x and y of length m and n, implement a function | |
81 outer (x, y, f) that returns an m-by-n matrix with entries | |
82 f (x(i), y(j)). If f is omitted, multiplication is the default. | |
83 Should probably work for any vectors, not just if x is a column | |
84 vector and y is a row vector. | |
85 | |
86 * Make it possible to solve b = L \ x efficiently, either by | |
87 providing an explicit function call, or by automatically | |
88 determining that L is triangular. If it is done automatically, | |
89 provide some means for determining whether Octave has actually | |
90 detected that the matrix is triangular. | |
91 | |
92 * The polyfit function uses the economy QR factorization, but even | |
93 that can take a lot of time for large datasets. Consider an | |
94 option to compute the result with inv (A' * A) * A' * y or some | |
95 other faster method.d Possibly just switch to this method if the | |
96 dataset is larger than some value. | |
97 | |
98 * Make QR more memory efficient for large matrices when not all the | 63 * Make QR more memory efficient for large matrices when not all the |
99 columns of Q are required (apparently this is not handled by the | 64 columns of Q are required (apparently this is not handled by the |
100 lapack code yet). | 65 lapack code yet). |
101 | 66 |
102 * Consider making the behavior of the / and \ operators for | 67 * Consider making the behavior of the / and \ operators for |
113 * Implement fourth argument to the sprand and sprandn, and addition | 78 * Implement fourth argument to the sprand and sprandn, and addition |
114 arguments to sprandsym that the leading brand implements. | 79 arguments to sprandsym that the leading brand implements. |
115 | 80 |
116 * Sparse logical indexing in idx_vector class so that something like | 81 * Sparse logical indexing in idx_vector class so that something like |
117 "a=sprandn(1e6,1e6,1e-6); a(a<1) = 0" won't cause a memory overflow. | 82 "a=sprandn(1e6,1e6,1e-6); a(a<1) = 0" won't cause a memory overflow. |
118 | |
119 * Write the rest of the sparse docs | |
120 | |
121 * The algo in TOMS 582 is perfect for symrcm function. However, this is | |
122 under the ACM license and can't be used in a GPL program. | |
123 | |
124 An alternative is that PETSC is GPL compatiable and has a symrcm | |
125 implemented from the original SPARSPAK. Its not clear that this is | |
126 legal to me as I have found no clarification of the original license | |
127 of SPARSPAK. As PETSC has had this code for over 10 years without | |
128 problem, we can perhaps assume that there are no issues. Maybe need | |
129 to contact PETSC people or the SPARSPAK people at uni of waterloo | |
130 to check issues. | |
131 | 83 |
132 * Make spalloc(r,c,n) actually create an empty sparse with n non-zero | 84 * Make spalloc(r,c,n) actually create an empty sparse with n non-zero |
133 elements? This allows something like | 85 elements? This allows something like |
134 | 86 |
135 sm = spalloc (r,c,n) | 87 sm = spalloc (r,c,n) |
156 - symmmd Superseded by symamd | 108 - symmmd Superseded by symamd |
157 - colmmd Superseded by colamd | 109 - colmmd Superseded by colamd |
158 - treelayout | 110 - treelayout |
159 - cholinc | 111 - cholinc |
160 - condest | 112 - condest |
161 - bicg | 113 - bicg Can this be taken from octave-forge? |
162 - bicgstab | 114 - bicgstab |
163 - cgs | 115 - cgs |
164 - gmres | 116 - gmres |
165 - lsqr | 117 - lsqr |
166 - minres | 118 - minres |
167 - pcg Can this be taken from o-forge? Is it compatiable | |
168 - pcr Can and should this be taken from o-forge? | |
169 - qmr | 119 - qmr |
170 - symmlq | 120 - symmlq |
171 - spaugment | 121 - spaugment |
172 | 122 |
173 -------- | 123 -------- |
174 Graphics: | 124 Graphics: |
175 -------- | 125 -------- |
176 | 126 |
177 * Make plotting with plplot work. | 127 * Make plotting with plplot work. |
178 | 128 |
179 * Fix interface with gnuplot to wait for gnuplot to output any text | |
180 before octave returns a prompt. Possible by implementing two | |
181 way communication between gnuplot and Octave. | |
182 | |
183 * Handle gnuplot ranges correctly for parametric modes (accept 3 | |
184 ranges for 2d plots and 5 ranges for 3d plots). | |
185 | |
186 * Make gsave (and possibly gload) work. Implement gsave by having it | |
187 also alter the plot command to not use temporary files (perhaps | |
188 with some user-specified template for naming them) and then | |
189 sending a `save' command to gnuplot. | |
190 | |
191 * It would be nice to be able to check that a plot is currently | |
192 being displayed. | |
193 | |
194 * Implement clf, gcf, get, set, orient, print, close, etc. in | |
195 Matlab-compatible ways. | |
196 | |
197 * Make it possible to check the current graphics terminal type. | 129 * Make it possible to check the current graphics terminal type. |
198 | |
199 * If possible, pass data to gnuplot without using temporary files. | |
200 | |
201 * If possible, pass binary data to gnuplot to speed things up. | |
202 | 130 |
203 * If using gnuplot, consider setting a smaller default for the | 131 * If using gnuplot, consider setting a smaller default for the |
204 `zero' value (e.g., set zero sqrt (realmin) or something). | 132 `zero' value (e.g., set zero sqrt (realmin) or something). |
205 | 133 |
206 ------- | 134 ------- |
208 ------- | 136 ------- |
209 | 137 |
210 * Improve performance of string functions, particularly for | 138 * Improve performance of string functions, particularly for |
211 searching and replacing. | 139 searching and replacing. |
212 | 140 |
213 * Provide some regex matching functions. | |
214 | |
215 * Convert string functions to work on string arrays. | 141 * Convert string functions to work on string arrays. |
216 | 142 |
217 * Make find work for strings. | 143 * Make find work for strings. |
218 | 144 |
219 * Consider making octave_print_internal() print some sort of text | 145 * Consider making octave_print_internal() print some sort of text |
220 representation for unprintable characters instead of sending them | 146 representation for unprintable characters instead of sending them |
221 directly to the terminal. (But don't do this for fprintf!) | 147 directly to the terminal. (But don't do this for fprintf!) |
222 | 148 |
223 * Consider changing the default value of `string_fill_char' from SPC | 149 * Consider changing the default value of `string_fill_char' from SPC |
224 to NUL. | 150 to NUL. |
225 | |
226 * Consider making ["test", []] ==> "test", for compatibility with | |
227 Matlab, at least when some set of preferences are set. | |
228 | 151 |
229 ---------------- | 152 ---------------- |
230 Other Data Types: | 153 Other Data Types: |
231 ---------------- | 154 ---------------- |
232 | 155 |
249 * Make fread and fwrite work for complex data. Iostreams based | 172 * Make fread and fwrite work for complex data. Iostreams based |
250 versions of these functions would also be nice, and if you are | 173 versions of these functions would also be nice, and if you are |
251 working on them, it would be good to support other size | 174 working on them, it would be good to support other size |
252 specifications (integer*2, etc.). | 175 specifications (integer*2, etc.). |
253 | 176 |
254 * Make fread and fopen look in LOADPATH for files. | 177 * Make fread and fopen look in the load path for files. |
255 | |
256 * Make load and save look for <file>.mat if only given <file>. | |
257 | |
258 Potential sticky points: | |
259 | |
260 - For load, if both foo and foo.mat exist, should it prefer foo | |
261 or foo.mat? Should the preference depend on the arguments to | |
262 load? I think it should only prefer .mat files if the | |
263 -mat-binary option is supplied, or if the file foo.mat exists | |
264 but the file foo does not. | |
265 | |
266 - For save, should it prefer to create foo or foo.mat? Should | |
267 the preference depend on the arguments to save? Should the | |
268 default_save_format imply a default preference? I think it | |
269 should only create .mat files if it is writing Matlab | |
270 compatible files. | |
271 | 178 |
272 * Move some pr-output stuff to liboctave. | 179 * Move some pr-output stuff to liboctave. |
273 | 180 |
274 * Make the cutoff point for changing to packed storage a | 181 * Make the cutoff point for changing to packed storage a |
275 user-preference variable with default value 8192. | 182 user-preference variable with default value 8192. |
307 is parsed as IF expr STRING END. | 214 is parsed as IF expr STRING END. |
308 | 215 |
309 * Consider grouping all preference variables in a structure instead | 216 * Consider grouping all preference variables in a structure instead |
310 of further polluting the namespace. Maybe `Octave_options.xxx'? | 217 of further polluting the namespace. Maybe `Octave_options.xxx'? |
311 | 218 |
312 * Rewrite functions in input.cc to do the right thing in all cases | |
313 of using readline, forced interactive behavior, echoing of input, | |
314 etc. | |
315 | |
316 * Consider making linspace() and logspace() return the value | |
317 corresponding to the first argument if the number of requested | |
318 points is 1. | |
319 | |
320 * Consider allowing an arbitrary property list to be attached to any | 219 * Consider allowing an arbitrary property list to be attached to any |
321 variable. This could be a more general way to handle the help | 220 variable. This could be a more general way to handle the help |
322 string that can currently be added with `document'. | 221 string that can currently be added with `document'. |
323 | 222 |
324 * Allow more command line options to be accessible as built-in | 223 * Allow more command line options to be accessible as built-in |
325 variables (--echo-commands, etc.). | 224 variables (--echo-commands, etc.). |
326 | 225 |
327 * Allow `octave -c STRING' to execute commands from STRING then | |
328 exit. | |
329 | |
330 * Make the interpreter run faster. | 226 * Make the interpreter run faster. |
331 | |
332 * Make it possible to disable or enable all warnings on an | |
333 individual basis from the command line or via some built-in | |
334 structure variable. | |
335 | |
336 * Warn about complex comparisons? Could just use double_value() or | |
337 matrix_value() instead of explicit conversions to real types. For | |
338 this to really be useful, some additional information must be | |
339 available to point to the location of the code that triggers the | |
340 warning. | |
341 | 227 |
342 * Allow arbitrary lower bounds for array indexing. | 228 * Allow arbitrary lower bounds for array indexing. |
343 | 229 |
344 * Improve performance of recursive function calls. | 230 * Improve performance of recursive function calls. |
345 | 231 |
347 selecting by individual directories or functions. | 233 selecting by individual directories or functions. |
348 | 234 |
349 * Add a command-line option to tell Octave to just do syntax | 235 * Add a command-line option to tell Octave to just do syntax |
350 checking and not execute statements. | 236 checking and not execute statements. |
351 | 237 |
352 * Is it necessary for do_binary_op and do_unary_op to be friends of | |
353 the tree_constant class. | |
354 | |
355 * Clean up symtab and variable stuff. | 238 * Clean up symtab and variable stuff. |
356 | 239 |
357 * Input stream class for parser files -- must manage buffers for | 240 * Input stream class for parser files -- must manage buffers for |
358 flex and context for global variable settings. | 241 flex and context for global variable settings. |
359 | 242 |
367 | 250 |
368 alias fun function_with_a_very_long_name | 251 alias fun function_with_a_very_long_name |
369 | 252 |
370 so that `function_with_a_very_long_name' could be invoked as | 253 so that `function_with_a_very_long_name' could be invoked as |
371 `fun'. | 254 `fun'. |
372 | |
373 * What should is_global() return when called for built-in variables? | |
374 | 255 |
375 * Allow local changes to variables to be written more compactly than | 256 * Allow local changes to variables to be written more compactly than |
376 is currently possible with unwind_protect. For example, | 257 is currently possible with unwind_protect. For example, |
377 | 258 |
378 function f () | 259 function f () |
393 endfunction | 274 endfunction |
394 | 275 |
395 * Fix all function files to check for bogus inputs (wrong number or | 276 * Fix all function files to check for bogus inputs (wrong number or |
396 types of input arguments, wrong number of output arguments). | 277 types of input arguments, wrong number of output arguments). |
397 | 278 |
398 * Reduce the memory and time required to parse very large matrix | |
399 lists. | |
400 | |
401 * Handle options for built-in functions more consistently. | 279 * Handle options for built-in functions more consistently. |
402 | 280 |
403 * Too much time is spent allocating and freeing memory. What can be | 281 * Too much time is spent allocating and freeing memory. What can be |
404 done to improve performance? | 282 done to improve performance? |
405 | 283 |
408 | 286 |
409 * It would be nice if output from the Fortran routines could be | 287 * It would be nice if output from the Fortran routines could be |
410 passed through the pager. | 288 passed through the pager. |
411 | 289 |
412 * Attempt to recognize common subexpressions in the parser. | 290 * Attempt to recognize common subexpressions in the parser. |
413 | |
414 * Handle arrays with more than two dimensions. | |
415 | 291 |
416 * Consider making it possible to specify an empty matrix with a | 292 * Consider making it possible to specify an empty matrix with a |
417 syntax like [](e1, e2). Of course at least one of the expressions | 293 syntax like [](e1, e2). Of course at least one of the expressions |
418 must be zero... | 294 must be zero... |
419 | 295 |
420 * Is Matrix::fortran_vec() really necessary? | 296 * Is Matrix::fortran_vec() really necessary? |
421 | 297 |
422 * print_usage() should set error_state in most cases? | |
423 | |
424 * Add a command that works like bash's `builtin' command. | 298 * Add a command that works like bash's `builtin' command. |
425 | 299 |
426 * Handle end-of-line comments correctly in parse trees for use with | |
427 the type command. | |
428 | |
429 * Clean up eye, eval, feval, keyboard, input, ones, zeros. | |
430 | |
431 * It would be nice to have an interactive debugger. | 300 * It would be nice to have an interactive debugger. |
432 | |
433 * Make whos report total memory used by variables (and functions?). | |
434 | 301 |
435 * Rewrite whos and the symbol_record_info class. Write a built-in | 302 * Rewrite whos and the symbol_record_info class. Write a built-in |
436 function that gives all the basic information, then write who and | 303 function that gives all the basic information, then write who and |
437 whos as M-files. | 304 whos as M-files. |
438 | 305 |
439 * Make whos work for structure elements: | |
440 | |
441 prot type rows cols name | |
442 ==== ==== ==== ==== ==== | |
443 wd matrix m n struct.field | |
444 | |
445 * Allow who to return information as a list of strings. | |
446 | |
447 * On systems that support matherr(), make it possible for users to | 306 * On systems that support matherr(), make it possible for users to |
448 enable the printing of warning messages. | 307 enable the printing of warning messages. |
449 | 308 |
450 * Make it possible to mark variables and functions as read-only. | 309 * Make it possible to mark variables and functions as read-only. |
451 | |
452 * Provide a built-in function for applying a scalar function to an | |
453 array. Be sure to note in the manual that this is not the | |
454 preferred way to write a function that can handle vector/matrix | |
455 arguments because there is a significant overhead for function | |
456 calls. If you are really looking to make a function work for | |
457 vector/matrix arguments and you want it to run fast, you should | |
458 write it in terms of the existing vector/matrix operators as much | |
459 as possible. | |
460 | 310 |
461 * Make it possible to write a function that gets a reference to a | 311 * Make it possible to write a function that gets a reference to a |
462 matrix in memory and change one or more elements without | 312 matrix in memory and change one or more elements without |
463 generating a second copy of the data. | 313 generating a second copy of the data. |
464 | 314 |
472 * Add an option to allow saving input from script files in the | 322 * Add an option to allow saving input from script files in the |
473 history list. | 323 history list. |
474 | 324 |
475 * The history command should accept two numeric arguments to | 325 * The history command should accept two numeric arguments to |
476 indicate a range of history entries to display, save or read. | 326 indicate a range of history entries to display, save or read. |
477 | |
478 * Add an option to include information about the Octave session in | |
479 the history list. Possibly a time/date stamp and the current | |
480 Octave line number, appended as a comment (users should probably | |
481 be able to control the format). | |
482 | 327 |
483 * Avoid writing the history file if the history list has not | 328 * Avoid writing the history file if the history list has not |
484 changed. | 329 changed. |
485 | 330 |
486 * Avoid permission errors if the history file cannot be opened for | 331 * Avoid permission errors if the history file cannot be opened for |
522 * The docs should mention something about efficiency and that using | 367 * The docs should mention something about efficiency and that using |
523 array operations is almost always a good idea for speed. | 368 array operations is almost always a good idea for speed. |
524 | 369 |
525 * Texinfo documentation for the C++ classes. | 370 * Texinfo documentation for the C++ classes. |
526 | 371 |
527 * Support multiple info files, perhaps allowing one or more in each | |
528 directory in the LOADPATH, so that local collections of M-files | |
529 could be documented with Info. | |
530 | |
531 * Improve help messages for operators and keywords in help.cc. | |
532 | |
533 * Make index entries more consistent to improve behavior of `help -i'. | 372 * Make index entries more consistent to improve behavior of `help -i'. |
534 | 373 |
535 * Make `help -i' try to find a whole word match first. | 374 * Make `help -i' try to find a whole word match first. |
536 | |
537 * Allow help for local additions to be accessible with help -i. | |
538 | 375 |
539 * Clean up help stuff. | 376 * Clean up help stuff. |
540 | 377 |
541 * Demo files. | 378 * Demo files. |
542 | 379 |
546 It would be best to generate information for each function directly | 383 It would be best to generate information for each function directly |
547 from the M-files, so that the information doesn't have to be | 384 from the M-files, so that the information doesn't have to be |
548 duplicated, and will remain current if the M-files change. It | 385 duplicated, and will remain current if the M-files change. It |
549 would also be best to do as much of this as possible in an M-file, | 386 would also be best to do as much of this as possible in an M-file, |
550 though I wouldn't mind adding some basic support for listing the | 387 though I wouldn't mind adding some basic support for listing the |
551 names of all the directories in the LOADPATH, and the names of all | 388 names of all the directories in the load path, and the names of all |
552 the M-files in a given directory if that is needed. | 389 the M-files in a given directory if that is needed. |
553 | 390 |
554 Also make it possible to recursively search for Contents files: | 391 Also make it possible to recursively search for Contents files: |
555 | 392 |
556 help dir -- Contents from dir | 393 help dir -- Contents from dir |
557 help dir// -- Contents from dir and all its subdirectories | 394 help dir// -- Contents from dir and all its subdirectories |
558 help dir1/dir2 -- Contents from dir2 which is under dir1 | 395 help dir1/dir2 -- Contents from dir2 which is under dir1 |
559 | |
560 * Some sort of blurb (2-3 pages) describing Octave in a reasonably | |
561 coherent way, where to get it etc., perhaps formatted pretty, | |
562 i.e. not just text. Maybe start with the latest Announce file. | |
563 | 396 |
564 ----- | 397 ----- |
565 Tests: | 398 Tests: |
566 ----- | 399 ----- |
567 | 400 |
610 * GNU coding standards: | 443 * GNU coding standards: |
611 | 444 |
612 -- Add a `Makefile' target to the Makefiles. | 445 -- Add a `Makefile' target to the Makefiles. |
613 -- Comments on #else and #endif preprocessor commands. | 446 -- Comments on #else and #endif preprocessor commands. |
614 -- Change error message format to match standards everywhere. | 447 -- Change error message format to match standards everywhere. |
615 | |
616 * Use STL stuff instead of libg++ lists, maps, and stacks. | |
617 | 448 |
618 * Eliminate more global variables. | 449 * Eliminate more global variables. |
619 | 450 |
620 * Move procstream to liboctave. | 451 * Move procstream to liboctave. |
621 | 452 |