Mercurial > octave
comparison NEWS @ 2330:12ff450cbb1f
[project @ 1996-07-19 01:39:22 by jwe]
Initial revision
author | jwe |
---|---|
date | Fri, 19 Jul 1996 01:49:31 +0000 |
parents | |
children | 989c617b63ca |
comparison
equal
deleted
inserted
replaced
2329:30c606bec7a8 | 2330:12ff450cbb1f |
---|---|
1 Summary of changes for version 1.2: | |
2 ---------------------------------- | |
3 | |
4 * The configure option --enable-bounds-check turns on bounds | |
5 checking on element references for Octave's internal array and | |
6 matrix classes. It's enabled by default. To disable this | |
7 feature, configure Octave with --disable-bounds-check. | |
8 | |
9 * The C-style I/O functions (fopen, fprintf, etc.) have been | |
10 rewritten to be more compatible with Matlab. The fputs function | |
11 has also been added. Usage of the *printf functions that was | |
12 allowed in previous versions of Octave should still work. | |
13 However, there is no way to make the new versions of the *scanf | |
14 functions compatible with Matlab *and* previous versions of | |
15 Octave. An optional argument to the *scanf functions is now | |
16 available to make them behave in a way that is compatible with | |
17 previous versions of Octave. | |
18 | |
19 * The interface to the pager has changed. The new built-in variable | |
20 `page_output_immediately' controls when Octave sends output to the | |
21 pager. If it is nonzero, Octave sends output to the pager as soon | |
22 as it is available. Otherwise, Octave buffers its output and | |
23 waits until just before the prompt is printed to flush it to the | |
24 pager. | |
25 | |
26 * Expressions of the form | |
27 | |
28 A(i,j) = x | |
29 | |
30 where X is a scalar and the indices i and j define a matrix of | |
31 elements now work as you would expect rather than giving an error. | |
32 I am told that this is how Matlab 5.0 will behave when it is | |
33 released. | |
34 | |
35 * Indexing of character strings now works. | |
36 | |
37 * The echo command has been implemented. | |
38 | |
39 * The document command is now a regular function. | |
40 | |
41 * New method for handling errors: | |
42 | |
43 try | |
44 BODY | |
45 catch | |
46 CLEANUP | |
47 end_try_catch | |
48 | |
49 Where BODY and CLEANUP are both optional and may contain any | |
50 Octave expressions or commands. The statements in CLEANUP are | |
51 only executed if an error occurs in BODY. | |
52 | |
53 No warnings or error messages are printed while BODY is | |
54 executing. If an error does occur during the execution of BODY, | |
55 CLEANUP can access the text of the message that would have been | |
56 printed in the builtin constant __error_text__. This is the same | |
57 as eval (TRY, CATCH) (which may now also use __error_text__) but | |
58 it is more efficient since the commands do not need to be parsed | |
59 each time the TRY and CATCH statements are evaluated. | |
60 | |
61 * Octave no longer parses the help command by grabbing everything | |
62 after the keyword `help' until a newline character is read. To | |
63 get help for `;' or `,', now, you need to use the command | |
64 `help semicolon' or `help comma'. | |
65 | |
66 * Octave's parser now does some simple constant folding. This means | |
67 that expressions like 3*i are now evaluated only once, when a | |
68 function is compiled, and the right hand side of expressions like | |
69 a = [1,2;3,4] are treated as true matrix constants rather than | |
70 lists of elements which must be evaluated each time they are | |
71 needed. | |
72 | |
73 * Built-in variables that can take values of "true" and "false" can | |
74 now also be set to any nonzero scalar value to indicate "true", | |
75 and 0 to indicate "false". | |
76 | |
77 * New built-in variables `history_file', `history_size', and | |
78 `saving_history'. | |
79 | |
80 * New built-in variable `string_fill_char' specifies the character | |
81 to fill with when creating arrays of strings. | |
82 | |
83 * If the new built-in variable `gnuplot_has_frames' is nonzero, | |
84 Octave assumes that your copy of gnuplot includes support for | |
85 multiple plot windows when using X11. | |
86 | |
87 If the new built-in variable `gnuplot_has_multiplot' is nonzero, | |
88 Octave assumes that your copy of gnuplot has the multiplot support | |
89 that is included in recent 3.6beta releases. | |
90 | |
91 The initial values of these variables are determined by configure, | |
92 but can be changed in your startup script or at the command line | |
93 in case configure got it wrong, or if you upgrade your gnuplot | |
94 installation. | |
95 | |
96 * The new plot function `figure' allows multiple plot windows when | |
97 using newer versions of gnuplot with X11. | |
98 | |
99 * Octave now notices when the plotter has exited unexpectedly. | |
100 | |
101 * New built-in variable `warn_missing_semicolon'. If nonzero, Octave | |
102 will warn when statements in function definitions don't end in | |
103 semicolons. The default value is 0. | |
104 | |
105 * Octave now attempts to continue after floating point exceptions | |
106 or out-of-memory errors. | |
107 | |
108 * If Octave crashes, it now attempts to save all user-defined | |
109 variables in a file named `octave-core' in the current directory | |
110 before exiting. | |
111 | |
112 * It is now possible to get the values of individual option settings | |
113 for the dassl, fsolve, lsode, npsol, qpsol, and quad functions | |
114 using commands like | |
115 | |
116 dassl_reltol = dassl_options ("relative tolerance"); | |
117 | |
118 * The svd() function no longer computes the left and right singular | |
119 matrices unnecessarily. This can significantly improve | |
120 performance for large matrices if you are just looking for the | |
121 singular values. | |
122 | |
123 * The filter() function is now a built-in function. | |
124 | |
125 * New function randn() returns a pseudo-random number from a normal | |
126 distribution. The rand() and randn() functions have separate | |
127 seeds and generators. | |
128 | |
129 * Octave's command-line arguments are now available in the built-in | |
130 variable `argv'. The program name is also available in the | |
131 variables `program_invocation_name' and `program_name'. If | |
132 executing a script from the command line (e.g., octave foo.m) or | |
133 using the `#! /bin/octave' hack, the program name is set to the | |
134 name of the script. | |
135 | |
136 * New built-in variable `completion_append_char' used as the | |
137 character to append to successful command-line completion | |
138 attempts. The default is " " (a single space). | |
139 | |
140 * Octave now uses a modified copy of the readline library from | |
141 version 1.14.5 of GNU bash. | |
142 | |
143 * In prompt strings, `\H' expands to the whole host name. | |
144 | |
145 * New built-in variable `beep_on_error'. If nonzero, Octave will try | |
146 to ring your terminal's bell before printing an error message. | |
147 The default value is 0. | |
148 | |
149 * New command-line argument --traditional sets the following | |
150 preference variables for compatibility with Matlab: | |
151 | |
152 PS1 = ">> " | |
153 PS2 = "" | |
154 beep_on_error = 1 | |
155 default_save_format = "mat-binary" | |
156 define_all_return_values = 1 | |
157 do_fortran_indexing = 1 | |
158 empty_list_elements_ok = 1 | |
159 implicit_str_to_num_ok = 1 | |
160 ok_to_lose_imaginary_part = 1 | |
161 page_screen_output = 0 | |
162 prefer_column_vectors = 0 | |
163 prefer_zero_one_indexing = 1 | |
164 print_empty_dimensions = 0 | |
165 treat_neg_dim_as_zero = 1 | |
166 warn_function_name_clash = 0 | |
167 whitespace_in_literal_matrix = "traditional" | |
168 | |
169 * New functions: | |
170 | |
171 readdir -- returns names of files in directory as array of strings | |
172 mkdir -- create a directory | |
173 rmdir -- remove a directory | |
174 rename -- rename a file | |
175 unlink -- delete a file | |
176 umask -- set permission mask for file creation | |
177 stat -- get information about a file | |
178 lstat -- get information about a symbolic link | |
179 more -- turn the pager on or off | |
180 gammaln -- alias for lgamma | |
181 | |
182 * New audio functions from Andreas Weingessel | |
183 <Andreas.Weingessel@ci.tuwien.ac.at>. | |
184 | |
185 lin2mu -- linear to mu-law encoding | |
186 loadaudio -- load an audio file to a vector | |
187 mu2lin -- mu-law to linear encoding | |
188 playaudio -- play an audio file | |
189 record -- record sound and store in vector | |
190 saveaudio -- save a vector as an audio file | |
191 setaudio -- executes mixer shell command | |
192 | |
193 * New plotting functions from Vinayak Dutt. Ones dealing with | |
194 multiple plots on one page require features from gnuplot 3.6beta | |
195 (or later). | |
196 | |
197 bottom_title -- put title at the bottom of the plot | |
198 mplot -- multiplot version of plot | |
199 multiplot -- switch multiple-plot mode on or off | |
200 oneplot -- return to one plot per page | |
201 plot_border -- put a border around plots | |
202 subplot -- position multiple plots on a single page | |
203 subwindow -- set subwindow position for next plot | |
204 top_title -- put title at the top of the plot | |
205 zlabel -- put a label on the z-axis | |
206 | |
207 * New string functions | |
208 | |
209 bin2dec -- convert a string of ones and zeros to an integer | |
210 blanks -- create a string of blanks | |
211 deblank -- delete trailing blanks | |
212 dec2bin -- convert an integer to a string of ones and zeros | |
213 dec2hex -- convert an integer to a hexadecimal string | |
214 findstr -- locate occurrences of one string in another | |
215 hex2dec -- convert a hexadecimal string to an integer | |
216 index -- return position of first occurrence a string in another | |
217 rindex -- return position of last occurrence a string in another | |
218 split -- divide one string into pieces separated by another | |
219 str2mat -- create a string matrix from a list of strings | |
220 strrep -- replace substrings in a string | |
221 substr -- extract a substring | |
222 | |
223 The following functions return a matrix of ones and zeros. | |
224 Elements that are nonzero indicate that the condition was true for | |
225 the corresponding character in the string array. | |
226 | |
227 isalnum -- letter or a digit | |
228 isalpha -- letter | |
229 isascii -- ascii | |
230 iscntrl -- control character | |
231 isdigit -- digit | |
232 isgraph -- printable (but not space character) | |
233 islower -- lower case | |
234 isprint -- printable (including space character) | |
235 ispunct -- punctuation | |
236 isspace -- whitespace | |
237 isupper -- upper case | |
238 isxdigit -- hexadecimal digit | |
239 | |
240 These functions return new strings. | |
241 | |
242 tolower -- convert to lower case | |
243 toupper -- convert to upper case | |
244 | |
245 * New function, fgetl. Both fgetl and fgets accept an optional | |
246 second argument that specifies a maximum number of characters to | |
247 read, and the function fgets is now compatible with Matlab. | |
248 | |
249 * Printing in hexadecimal format now works (format hex). It is also | |
250 possible to print the internal bit representation of a value | |
251 (format bit). Note that these formats are only implemented for | |
252 numeric values. | |
253 | |
254 * Additional structure features: | |
255 | |
256 -- Name completion now works for structures. | |
257 | |
258 -- Values and names of structure elements are now printed by | |
259 default. The new built-in variable `struct_levels_to_print' | |
260 controls the depth of nested structures to print. The default | |
261 value is 2. | |
262 | |
263 -- New functions: | |
264 | |
265 struct_contains (S, NAME) -- returns 1 if S is a structure with | |
266 element NAME; otherwise returns 0. | |
267 | |
268 struct_elements (S) -- returns the names of all elements | |
269 of structure S in an array of strings. | |
270 | |
271 * New io/subprocess functions: | |
272 | |
273 fputs -- write a string to a file with no formatting | |
274 popen2 -- start a subprocess with 2-way communication | |
275 mkfifo -- create a FIFO special file | |
276 popen -- open a pipe to a subprocess | |
277 pclose -- close a pipe from a subprocess | |
278 waitpid -- check the status of or wait for subprocesses | |
279 | |
280 * New time functions: | |
281 | |
282 asctime -- format time structure according to local format | |
283 ctime -- equivalent to `asctime (localtime (TMSTRUCT))' | |
284 gmtime -- return time structure corresponding to UTC | |
285 localtime -- return time structure corresponding to local time zone | |
286 strftime -- print given time structure using specified format | |
287 time -- return current time | |
288 | |
289 The `clock' and `date' functions are now implemented in M-files | |
290 using these basic functions. | |
291 | |
292 * Access to additional Unix system calls: | |
293 | |
294 dup2 -- duplicate a file descriptor | |
295 exec -- replace current process with a new process | |
296 fcntl -- control open file descriptors | |
297 fork -- create a copy of the current process | |
298 getpgrp -- return the process group id of the current process | |
299 getpid -- return the process id of the current process | |
300 getppid -- return the process id of the parent process | |
301 pipe -- create an interprocess channel | |
302 | |
303 * Other new functions: | |
304 | |
305 atexit -- register functions to be called when Octave exits | |
306 putenv -- define an environment variable | |
307 meshgrid -- compatible with Matlab's meshgrid function | |
308 tilde_expand -- perform tilde expansion on string | |
309 completion_matches -- perform command completion on string | |
310 | |
311 * The New function octave_config_info returns a structure containing | |
312 information about how Octave was configured and compiled. | |
313 | |
314 * New function getrusage returns a structure containing system | |
315 resource usage statistics. The `cputime' function is now defined | |
316 in an M-file using getrusage. | |
317 | |
318 * The info reader is now a separate binary that runs as a | |
319 subprocess. You still need the info reader distributed with | |
320 Octave though, because there are some new command-line arguments | |
321 that are not yet available in the public release of Info. | |
322 | |
323 * There is a new built-in variable, INFO_PROGRAM, which is used as | |
324 the name of the info program to run. Its initial value is | |
325 $OCTAVE_HOME/lib/octave/VERSION/exec/ARCH/info, but that value can | |
326 be overridden by the environment variable OCTAVE_INFO_PROGRAM, or | |
327 the command line argument --info-program NAME, or by setting the | |
328 value of INFO_PROGRAM in a startup script. | |
329 | |
330 * There is a new built-in variable, EXEC_PATH, which is used as | |
331 the list of directories to search when executing subprograms. Its | |
332 initial value is taken from the environment variable | |
333 OCTAVE_EXEC_PATH (if it exists) or PATH, but that value can be | |
334 overridden by the the command line argument --exec-path PATH, or | |
335 by setting the value of EXEC_PATH in a startup script. If the | |
336 EXEC_PATH begins (ends) with a colon, the directories | |
337 $OCTAVE_HOME/lib/octave/VERSION/exec/ARCH and $OCTAVE_HOME/bin are | |
338 prepended (appended) to EXEC_PATH (if you don't specify a value | |
339 for EXEC_PATH explicitly, these special directories are prepended | |
340 to your PATH). | |
341 | |
342 * If it is present, Octave will now use an `ls-R' database file to | |
343 speed up recursive path searching. Octave looks for a file called | |
344 ls-R in the directory specified by the environment variable | |
345 OCTAVE_DB_DIR. If that is not set but the environment variable | |
346 OCTAVE_HOME is set, Octave looks in $OCTAVE_HOME/lib/octave. | |
347 Otherwise, Octave looks in the directory $datadir/octave (normally | |
348 /usr/local/lib/octave). | |
349 | |
350 * New examples directory. | |
351 | |
352 * There is a new script, mkoctfile, that can be used to create .oct | |
353 files suitable for dynamic linking. | |
354 | |
355 * Many more bug fixes. | |
356 | |
357 * ChangeLogs are now kept in each subdirectory. | |
358 | |
359 Summary of changes for version 1.1.1: | |
360 ------------------------------------ | |
361 | |
362 * New built-in variables, default_return_value and | |
363 define_all_return_values. | |
364 | |
365 If define_all_return_values is set to "false", Octave does not do | |
366 anything special for return values that are left undefined, and | |
367 you will get an error message if you try to use them. For | |
368 example, if the function | |
369 | |
370 function [x, y] = f () | |
371 y = 1; | |
372 endfunction | |
373 | |
374 is called as | |
375 | |
376 octave:13> [a, b] = f () | |
377 | |
378 Octave will print an error message for the attempt to assign an | |
379 undefined value to `a'. | |
380 | |
381 This is incompatible with Matlab, which will define the return | |
382 variable `x' to be the empty matrix. To get the Matlab-like | |
383 behavior, you can set the variable define_all_return_values to | |
384 "true" (the default is "false") and default_return_value to `[]' | |
385 (the default). Then, any return values that remain undefined when | |
386 the function returns will be initialized to `[]'. | |
387 | |
388 If the function is called without explicitly asking for an output, | |
389 it will succeed. This behavior is compatible and unchanged from | |
390 previous versions of Octave. | |
391 | |
392 * New built-in variable suppress_verbose_help_message. If set to | |
393 "true", Octave will not add additional help information to the end | |
394 of the output from the help command and usage messages for | |
395 built-in commands. The default value is "false". | |
396 | |
397 * New built-in variable PS4 is used as the prefix of echoed input | |
398 (enabled with the --echo-input (-x) option). | |
399 | |
400 * The function size() now accepts an optional second argument. | |
401 | |
402 * Output from `save - ...' now goes through the pager. | |
403 | |
404 * The break statement may also be used to exit a function, for | |
405 compatibility with Matlab. | |
406 | |
407 * The directory tree for installing Octave is now closer to | |
408 conforming with the current GNU standards. | |
409 | |
410 * More bug fixes. | |
411 | |
412 Summary of changes for version 1.1.0: | |
413 ------------------------------------ | |
414 | |
415 * Octave now requires g++ 2.6.3 or later. This change is necessary | |
416 to make template instantiations cleaner, and to avoid having to | |
417 have special cases in the code for earlier versions of gcc. | |
418 | |
419 * A new data structure type has been added. The implementation uses | |
420 an associative array with indices limited to strings, but the | |
421 syntax is more like C-style structures. here are some examples of | |
422 using it. | |
423 | |
424 Elements of structures can be of any type, including structures: | |
425 | |
426 octave:1> x.a = 1; | |
427 octave:2> x.b = [1, 2; 3, 4]; | |
428 octave:3> x.c = "string"; | |
429 octave:4> x | |
430 x = | |
431 | |
432 <structure: a b c> | |
433 | |
434 octave:5> x.a | |
435 x.a = 1 | |
436 octave:6> x.b | |
437 x.b = | |
438 | |
439 1 2 | |
440 3 4 | |
441 | |
442 octave:7> x.c | |
443 x.c = string | |
444 octave:8> x.b.d = 3 | |
445 x.b.d = 3 | |
446 octave:9> x.b | |
447 x.b = | |
448 | |
449 <structure: d> | |
450 | |
451 octave:10> x.b.d | |
452 x.b.d = 3 | |
453 | |
454 Functions can return structures: | |
455 | |
456 octave:1> a = rand (3) + rand (3) * I; | |
457 octave:2> function y = f (x) | |
458 > y.re = real (x); | |
459 > y.im = imag (x); | |
460 > endfunction | |
461 octave:3> f (a) | |
462 ans = | |
463 | |
464 <structure: im re> | |
465 | |
466 octave:4> ans.im | |
467 ans.im = | |
468 | |
469 0.093411 0.229690 0.627585 | |
470 0.415128 0.221706 0.850341 | |
471 0.894990 0.343265 0.384018 | |
472 | |
473 octave:5> ans.re | |
474 ans.re = | |
475 | |
476 0.56234 0.14797 0.26416 | |
477 0.72120 0.62691 0.20910 | |
478 0.89211 0.25175 0.21081 | |
479 | |
480 Return lists can include structure elements: | |
481 | |
482 octave:1> [x.u, x.s, x.v] = svd ([1, 2; 3, 4]) | |
483 x.u = | |
484 | |
485 -0.40455 -0.91451 | |
486 -0.91451 0.40455 | |
487 | |
488 x.s = | |
489 | |
490 5.46499 0.00000 | |
491 0.00000 0.36597 | |
492 | |
493 x.v = | |
494 | |
495 -0.57605 0.81742 | |
496 -0.81742 -0.57605 | |
497 | |
498 octave:8> x | |
499 x = | |
500 | |
501 <structure: s u v> | |
502 | |
503 This feature should be considered experimental, but it seems to | |
504 work ok. Suggestions for ways to improve it are welcome. | |
505 | |
506 * Octave now supports a limited form of exception handling modelled | |
507 after the unwind-protect form of Lisp: | |
508 | |
509 unwind_protect | |
510 BODY | |
511 unwind_protect_cleanup | |
512 CLEANUP | |
513 end_unwind_protect | |
514 | |
515 Where BODY and CLEANUP are both optional and may contain any | |
516 Octave expressions or commands. The statements in CLEANUP are | |
517 guaranteed to be executed regardless of how control exits BODY. | |
518 | |
519 This is useful to protect temporary changes to global variables | |
520 from possible errors. For example, the following code will always | |
521 restore the original value of the built-in variable | |
522 do_fortran_indexing even if an error occurs while performing the | |
523 indexing operation. | |
524 | |
525 save_do_fortran_indexing = do_fortran_indexing; | |
526 unwind_protect | |
527 do_fortran_indexing = "true"; | |
528 elt = a (idx) | |
529 unwind_protect_cleanup | |
530 do_fortran_indexing = save_do_fortran_indexing; | |
531 end_unwind_protect | |
532 | |
533 Without unwind_protect, the value of do_fortran_indexing would not | |
534 be restored if an error occurs while performing the indexing | |
535 operation because evaluation would stop at the point of the error | |
536 and the statement to restore the value would not be executed. | |
537 | |
538 * Recursive directory searching has been implemented using Karl | |
539 Berry's kpathsea library. Directories below path elements that | |
540 end in // are searched recursively for .m files. | |
541 | |
542 * Octave now waits for additional input when a pair of parentheses | |
543 is `open' instead of giving an error. This allows one to write | |
544 statements like this | |
545 | |
546 if (big_long_variable_name == other_long_variable_name | |
547 || not_so_short_variable_name > 4 | |
548 && y > x) | |
549 some (code, here); | |
550 | |
551 without having to clutter up the if statement with continuation | |
552 characters. | |
553 | |
554 * Continuation lines are now allowed in string constants and are | |
555 handled correctly inside matrix constants. | |
556 | |
557 * Both `...{whitespace}\n' and `\{whitespace}\n' can be used to | |
558 introduce continuation lines, where {whitespace} may include | |
559 spaces, tabs and comemnts. | |
560 | |
561 * The script directory has been split up by topic. | |
562 | |
563 * Dynamic linking mostly works with dld. The following limitations | |
564 are known problems: | |
565 | |
566 -- Clearing dynamically linked functions doesn't work. | |
567 | |
568 -- Dynamic linking only works with dld, which has not been ported | |
569 to very many systems yet. | |
570 | |
571 -- Configuring with --enable-lite-kernel seems to mostly work to | |
572 make nonessential built-in functions dynamically loaded, but | |
573 there also seem to be some problems. For example, fsolve seems | |
574 to always return info == 3. This is difficult to debug since | |
575 gdb won't seem to allow breakpoints to be set inside | |
576 dynamically loaded functions. | |
577 | |
578 -- Octave uses a lot of memory if the dynamically linked functions | |
579 are compiled with -g. This appears to be a limitation with | |
580 dld, and can be avoided by not using -g to compile functions | |
581 that will be linked dynamically. | |
582 | |
583 * fft2 and ifft2 are now built-in functions. | |
584 | |
585 * The `&&' and `||' logical operators are now evaluated in a | |
586 short-circuit fashion and work differently than the element by | |
587 element operators `&' and `|'. See the Octave manual for more | |
588 details. | |
589 | |
590 * Expressions like 1./m are now parsed as 1 ./ m, not 1. / m. | |
591 | |
592 * The replot command now takes the same arguments as gplot or | |
593 gsplot (except ranges, which cannot be respecified with replot | |
594 (yet)) so you can add additional lines to existing plots. | |
595 | |
596 * The hold command has been implemented. | |
597 | |
598 * New function `clearplot' clears the plot window. The name `clg' | |
599 is aliased to `clearplot' for compatibility with Matlab. | |
600 | |
601 * The commands `gplot clear' and `gsplot clear' are equivalent to | |
602 `clearplot'. (Previously, `gplot clear' would evaluate `clear' as | |
603 an ordinary expression and clear all the visible variables.) | |
604 | |
605 * The Matlab-style plotting commands have been improved. They now | |
606 accept line-style arguments, multiple x-y pairs, and other plot | |
607 option flags. For example, | |
608 | |
609 plot (x, y, "@12", x, y2, x, y3, "4", x, y4, "+") | |
610 | |
611 results in a plot with | |
612 | |
613 y plotted with points of type 2 ("+") and color 1 (red). | |
614 y2 plotted with lines. | |
615 y3 plotted with lines of color 4. | |
616 y4 plotted with points which are "+"s. | |
617 | |
618 the help message for `plot' and `plot_opt' provide full | |
619 descriptions of the options. | |
620 | |
621 * NaN is now dropped from plot data, and Inf is converted to a | |
622 very large value before calling gnuplot. | |
623 | |
624 * Improved load and save commands: | |
625 | |
626 -- The save and load commands can now read and write a new binary | |
627 file format. Conversion to and from IEEE big and little endian | |
628 formats is handled automatically. Conversion for other formats | |
629 has not yet been implemented. | |
630 | |
631 -- The load command can now read Matlab .mat files, though it is | |
632 not yet able to read sparse matrices or handle conversion for | |
633 all data formats. | |
634 | |
635 -- The save command can write Matlab .mat files. | |
636 | |
637 -- The load command automatically determines the save format | |
638 (binary, ascii, or Matlab binary). | |
639 | |
640 -- The default format for the save command is taken from the | |
641 built-in variable `default_save_format'. | |
642 | |
643 -- The save and load commands now both accept a list of globbing | |
644 patterns so you can easily load a list of variables from a | |
645 file. | |
646 | |
647 -- The load command now accepts the option -list, for listing the | |
648 variable names without actually loading the data. With | |
649 -verbose, it prints a long listing. | |
650 | |
651 -- The load command now accepts the option -float-binary, for | |
652 saving floating point data in binary files in single precision. | |
653 | |
654 * who and whos now accept a list of globbing patterns so you can | |
655 limit the lists of variables and functions to those that match a | |
656 given set of patterns. | |
657 | |
658 * New functions for manipulating polynomials | |
659 | |
660 compan -- companion matrix corresponding to polynomial coefficients | |
661 conv -- convolve two vectors | |
662 deconv -- deconvolve two vectors | |
663 roots -- find the roots of a polynomial | |
664 poly -- characteristic polynomial of a matrix | |
665 polyderiv -- differentiate a polynomial | |
666 polyinteg -- integrate a polynomial | |
667 polyreduce -- reduce a polynomial to minimum number of terms | |
668 polyval -- evaluate a polynomial at a point | |
669 polyvalm -- evaluate a polynomial in the matrix sense | |
670 residue -- partial fraction expansion corresponding to the ratio | |
671 of two polynomials | |
672 | |
673 * New functions for manipulating sets | |
674 | |
675 create_set -- create a set of unique values | |
676 complement -- find the complement of two sets | |
677 intersection -- find the intersection of two sets | |
678 union -- find the union of two sets | |
679 | |
680 * New elementary functions: | |
681 | |
682 acot acoth acsc acsch | |
683 asec asech cot coth | |
684 csc csch log2 sec | |
685 sech | |
686 | |
687 * New special functions: | |
688 | |
689 beta -- beta function | |
690 betai -- incomplete beta function | |
691 gammai -- incomplete gamma function | |
692 | |
693 * New image processing functions: | |
694 | |
695 colormap -- set and return current colormap | |
696 gray -- set a gray colormap | |
697 gray2ind -- image format conversion | |
698 image -- display an image | |
699 imagesc -- scale and display an image | |
700 imshow -- display images | |
701 ind2gray -- image format conversion | |
702 ind2rgb -- image format conversion | |
703 loadimage -- load an image from a file | |
704 ntsc2rgb -- image format conversion | |
705 ocean -- set a color colormap | |
706 rgb2ind -- image format conversion | |
707 rgb2ntsc -- image format conversion | |
708 saveimage -- save an image to a file | |
709 | |
710 * New time and date funcitons: | |
711 | |
712 tic -- set wall-clock timer | |
713 toc -- get elapsed wall-clock time, since timer last set | |
714 etime -- another way to get elapsed wall-clock time | |
715 cputime -- get CPU time used since Octave started | |
716 is_leap_year -- is the given year a leap year? | |
717 | |
718 * Other new functions: | |
719 | |
720 bug_report -- submit a bug report to the bug-octave mailing list | |
721 | |
722 toascii -- convert a string to a matrix of ASCII character codes | |
723 | |
724 octave_tmp_file -- generate a unique temporary file name | |
725 | |
726 undo_string_escapes -- replace special characters in a string by | |
727 their backslash forms | |
728 | |
729 is_struct -- determine whether something is a structure data type | |
730 | |
731 feof -- check EOF condition for a specified file | |
732 ferror -- check error state for a specified file | |
733 fread -- read binary data from a file | |
734 fwrite -- write binary data to a file | |
735 | |
736 file_in_path -- check to see if named file exists in given path | |
737 | |
738 kbhit -- get a single character from the terminal | |
739 | |
740 axis -- change plot ranges | |
741 hist -- plot histograms | |
742 | |
743 diary -- save commands and output to a file | |
744 | |
745 type -- show the definition of a function | |
746 which -- print the type of an identifier or the location of a | |
747 function file | |
748 | |
749 isieee -- Returns 1 if host uses IEEE floating point | |
750 realmax -- Returns largest floating point number | |
751 realmin -- Returns smallest floating point number | |
752 | |
753 gcd -- greatest common divisor | |
754 lcm -- least common multiple | |
755 | |
756 null -- orthonormal basis of the null space of a matrix | |
757 orth -- orthonormal basis of the range space of a matrix | |
758 | |
759 fft2 -- two-dimensional fast fourier transform | |
760 ifft2 -- two-dimensional inverse fast fourier transform | |
761 filter -- digital filter | |
762 fftfilt -- filter using fft | |
763 fftconv -- convolve to vectors using fft | |
764 sinc -- returns sin(pi*x)/(pi*x) | |
765 freqz -- compute the frequency response of a filter | |
766 | |
767 * The meaning of nargin (== args.length ()) in built-in functions | |
768 has been changed to match the meaning of nargin in user-defined | |
769 functions. | |
770 | |
771 * Variable return lists. Octave now has a real mechanism for | |
772 handling functions that return an unspecified number of values, | |
773 so it is no longer necessary to place an upper bound on the number | |
774 of outputs that a function can produce. | |
775 | |
776 Here is an example of a function that uses the new syntax to | |
777 produce n values: | |
778 | |
779 function [...] = foo (n) | |
780 for i = 1:n | |
781 vr_val (i * x); | |
782 endfor | |
783 endfunction | |
784 | |
785 * New keyword, all_va_args, that allows the entire list of va_args | |
786 to be passed to another function. For example, given the functions | |
787 | |
788 function f (...) | |
789 while (nargin--) | |
790 disp (va_arg ()) | |
791 endwhile | |
792 endfunction | |
793 function g (...) | |
794 f ("begin", all_va_args, "end") | |
795 endfunction | |
796 | |
797 the statement | |
798 | |
799 g (1, 2, 3) | |
800 | |
801 prints | |
802 | |
803 begin | |
804 1 | |
805 2 | |
806 3 | |
807 end | |
808 | |
809 all_va_args may be used more than once, but can only be used | |
810 within functions that take a variable number of arguments. | |
811 | |
812 * If given a second argument, svd now returns an economy-sized | |
813 decomposition, eliminating the unecessary rows or columns of U or | |
814 V. | |
815 | |
816 * The max and min functions correctly handle complex matrices in | |
817 which some columns contain real values only. | |
818 | |
819 * The find function now handles 2 and 3 output arguments. | |
820 | |
821 * The qr function now allows computation of QR with pivoting. | |
822 | |
823 * hilb() is much faster for large matrices. | |
824 | |
825 * computer() is now a built-in function. | |
826 | |
827 * pinv() is now a built-in function. | |
828 | |
829 * The output from the history command now goes through the pager. | |
830 | |
831 * If a function is called without assigning the result, nargout is | |
832 now correctly set to 0. | |
833 | |
834 * It is now possible to write functions that only set some return | |
835 values. For example, calling the function | |
836 | |
837 function [x, y, z] = f () x = 1; z = 2; endfunction | |
838 | |
839 as | |
840 | |
841 [a, b, c] = f () | |
842 | |
843 produces: | |
844 | |
845 a = 1 | |
846 | |
847 b = [](0x0) | |
848 | |
849 c = 2 | |
850 | |
851 * The shell_cmd function has been renamed to system (the name | |
852 shell_cmd remains for compatibility). It now returns [output, status]. | |
853 | |
854 * New built-in variable `OCTAVE_VERSION'. Also a new function, | |
855 version, for compatibility with Matlab. | |
856 | |
857 * New built-in variable `automatic_replot'. If it is "true", Octave | |
858 will automatically send a replot command to gnuplot each time the | |
859 plot changes. Since this is fairly inefficient, the default value | |
860 is "false". | |
861 | |
862 * New built-in variable `whitespace_in_literal_matrix' allows some | |
863 control over how Octave decides to convert spaces to commas in | |
864 matrix expressions like `[m (1)]'. | |
865 | |
866 If the value of `whitespace_in_literal_matrix' is "ignore", Octave | |
867 will never insert a comma or a semicolon in a literal matrix list. | |
868 For example, the expression `[1 2]' will result in an error | |
869 instead of being treated the same as `[1, 2]', and the expression | |
870 | |
871 [ 1, 2, | |
872 3, 4 ] | |
873 | |
874 will result in the vector [1 2 3 4] instead of a matrix. | |
875 | |
876 If the value of `whitespace_in_literal_matrix' is "traditional", | |
877 Octave will convert spaces to a comma between identifiers and `('. | |
878 For example, given the matrix | |
879 | |
880 m = [3 2] | |
881 | |
882 the expression | |
883 | |
884 [m (1)] | |
885 | |
886 will be parsed as | |
887 | |
888 [m, (1)] | |
889 | |
890 and will result in | |
891 | |
892 [3 2 1] | |
893 | |
894 and the expression | |
895 | |
896 [ 1, 2, | |
897 3, 4 ] | |
898 | |
899 will result in a matrix because the newline character is converted | |
900 to a semicolon (row separator) even though there is a comma at the | |
901 end of the first line (trailing commas or semicolons are ignored). | |
902 This is apparently how Matlab behaves. | |
903 | |
904 Any other value for `whitespace_in_literal_matrix' results in | |
905 behavior that is the same as traditional, except that Octave does | |
906 not convert spaces to a comma between identifiers and `('. | |
907 For example, the expression | |
908 | |
909 [m (1)] | |
910 | |
911 will produce 3. This is the way Octave has always behaved. | |
912 | |
913 * Line numbers in error messages for functions defined in files and | |
914 for script files now correspond to the file line number, not the | |
915 number of lines after the function keyword appeared. | |
916 | |
917 * Octave now extracts help from script files. The comments must | |
918 come before any other statements in the file. | |
919 | |
920 * In function files, the first block of comments in the file will | |
921 now be interpreted as the help text if it doesn't look like the | |
922 Octave copyright notice. Otherwise, Octave extracts the first set | |
923 of comments after the function keyword. | |
924 | |
925 * The function clock is more accurate on systems that have the | |
926 gettimeofday() function. | |
927 | |
928 * The standard output stream is now automatically flushed before | |
929 reading from stdin with any of the *scanf() functions. | |
930 | |
931 * Expanded reference card. | |
932 | |
933 * The Octave distribution now includes a frequently asked questions | |
934 file, with answers. Better answers and more questions (with | |
935 answers!) are welcome. | |
936 | |
937 * New option --verbose. If Octave is invoked with --verbose and not | |
938 --silent, a message is printed if an octaverc file is read while | |
939 Octave is starting. | |
940 | |
941 * An improved configure script generated by Autoconf 2.0. | |
942 | |
943 * Lots of bug fixes. | |
944 | |
945 Summary of changes for version 1.0: | |
946 ---------------------------------- | |
947 | |
948 * C-style I/O functions now handle files referenced by name or by | |
949 number more consistently. | |
950 | |
951 Summary of changes for version 0.83: | |
952 ----------------------------------- | |
953 | |
954 * Loading global symbols should work now. | |
955 | |
956 * Clearing the screen doesn't reprint the prompt unnecessarily. | |
957 | |
958 * The operations <complex scalar> OP <real matrix> for OP == +, -, | |
959 *, or ./ no longer crash Octave. | |
960 | |
961 * More portability and configuration fixes. | |
962 | |
963 Summary of changes for version 0.82: | |
964 ----------------------------------- | |
965 | |
966 * Octave now comes with a reference card. | |
967 | |
968 * The manual has been improved, but more work remains to be done. | |
969 | |
970 * The atanh function now works for complex arguments. | |
971 | |
972 * The asin, acos, acosh, and atanh functions now work properly when | |
973 given real-valued arguments that produce complex results. | |
974 | |
975 * SEEK_SET, SEEK_CUR, and SEEK_END are now constants. | |
976 | |
977 * The `using' qualifier now works with gplot and gsplot when the | |
978 data to plot is coming directly from a file. | |
979 | |
980 * The strcmp function now works correctly for empty strings. | |
981 | |
982 * Eliminated bogus parse error for M-files that don't end with `end' | |
983 or `endfunction'. | |
984 | |
985 * For empty matrices with one nonzero dimension, the +, -, .*, and | |
986 ./ operators now correctly preserve the dimension. | |
987 | |
988 * Octave no longer crashes if you type ^D at the beginning of a line | |
989 in the middle of defining a loop or if statement. | |
990 | |
991 * On AIX systems, Back off on indexing DiagArray via Proxy class to | |
992 avoid gcc (or possibly AIX assembler?) bug. | |
993 | |
994 * Various other bug and portability fixes. | |
995 | |
996 Summary of changes for version 0.81: | |
997 ----------------------------------- | |
998 | |
999 * Octave no longer dumps core if you try to define a function in | |
1000 your .octaverc file. | |
1001 | |
1002 * Fixed bug in Array class that resulted in bogus off-diagonal | |
1003 elements when computing eigenvalue and singular value | |
1004 decompositions. | |
1005 | |
1006 * Fixed bug that prevented lsode from working on the SPARCstation, | |
1007 at least with some versions of Sun's f77. This bug was introduced | |
1008 in 0.80, when I changed LSODE to allow the user to abort the | |
1009 integration from within the RHS function. | |
1010 | |
1011 * Fixed bug that prevented global attribute of variables from being | |
1012 saved with save(), and another that prevented load() from working | |
1013 at all. | |
1014 | |
1015 Summary of changes for version 0.80: | |
1016 ----------------------------------- | |
1017 | |
1018 * I have started working on a manual for the C++ classes. At this | |
1019 point, it is little more than a list of function names. If you | |
1020 would like to volunteer to help work on this, please contact | |
1021 bug-octave@bevo.che.wisc.edu. | |
1022 | |
1023 * The patterns accepted by the save and clear commands now work like | |
1024 file name globbing patterns instead of regular expressions. I | |
1025 apologize for any inconvenience this change may cause, but file | |
1026 name globbing seems like a more reasonable style of pattern | |
1027 matching for this purpose. | |
1028 | |
1029 * It is now possible to specify tolerances and other optional inputs | |
1030 for dassl, fsolve, lsode, npsol, qpsol, and quad. For each of | |
1031 these functions, there is a corresponding function X_options, | |
1032 which takes a keyword and value arguments. If invoked without any | |
1033 arguments, the X_options functions print a list of possible | |
1034 keywords and current values. For example, | |
1035 | |
1036 npsol_options () | |
1037 | |
1038 prints a list of possible options with values, and | |
1039 | |
1040 npsol_options ("major print level", 10) | |
1041 | |
1042 sets the major print level to 10. | |
1043 | |
1044 The keyword match is not case sensitive, and the keywords may be | |
1045 abbreviated to the shortest unique match. For example, | |
1046 | |
1047 npsol_options ("ma p", 10) | |
1048 | |
1049 is equivalent to the statement shown above. | |
1050 | |
1051 * The new built-in variable save_precision can be used to set the | |
1052 number of digits preserved by the ASCII save command. | |
1053 | |
1054 * Assignment of [] now works in most cases to allow you to delete | |
1055 rows or columns of matrices and vectors. For example, given a | |
1056 4x5 matrix A, the assignment | |
1057 | |
1058 A (3, :) = [] | |
1059 | |
1060 deletes the third row of A, and the assignment | |
1061 | |
1062 A (:, 1:2:5) = [] | |
1063 | |
1064 deletes the first, third, and fifth columns. | |
1065 | |
1066 * Variable argument lists. Octave now has a real mechanism for | |
1067 handling functions that take an unspecified number of arguments, | |
1068 so it is no longer necessary to place an upper bound on the number | |
1069 of optional arguments that a function can accept. | |
1070 | |
1071 Here is an example of a function that uses the new syntax to print | |
1072 a header followed by an unspecified number of values: | |
1073 | |
1074 function foo (heading, ...) | |
1075 disp (heading); | |
1076 va_start (); | |
1077 while (--nargin) | |
1078 disp (va_arg ()); | |
1079 endwhile | |
1080 endfunction | |
1081 | |
1082 Note that the argument list must contain at least one named | |
1083 argument (this restriction may eventually be removed), and the | |
1084 ellipsis must appear as the last element of the argument list. | |
1085 | |
1086 Calling va_start() positions an internal pointer to the first | |
1087 unnamed argument and allows you to cycle through the arguments | |
1088 more than once. It is not necessary to call va_start() if you | |
1089 do not plan to cycle through the arguments more than once. | |
1090 | |
1091 * Recursive functions should work now. | |
1092 | |
1093 * The environment variable OCTAVE_PATH is now handled in the same | |
1094 way as TeX handles TEXINPUTS. If the path starts with `:', the | |
1095 standard path is prepended to the value obtained from the | |
1096 environment. If it ends with `:' the standard path is appended to | |
1097 the value obtained from the environment. | |
1098 | |
1099 * New functions, from Kurt Hornik (hornik@neuro.tuwien.ac.at) and | |
1100 the Department of Probability Theory and Statistics TU Wien, | |
1101 Austria: | |
1102 | |
1103 corrcoef -- corrcoef (X, Y) is the correlation between the i-th | |
1104 variable in X and the j-th variable in Y | |
1105 corrcoef (X) is corrcoef (X, X) | |
1106 cov -- cov (X, Y) is the covariance between the i-th | |
1107 variable in X and the j-th variable in Y | |
1108 cov (X) is cov (X, X) | |
1109 gls -- generalized least squares estimation | |
1110 kurtosis -- kurtosis(x) = N^(-1) std(x)^(-4) SUM_i (x(i)-mean(x))^4 - 3 | |
1111 If x is a matrix, return the row vector containing | |
1112 the kurtosis of each column | |
1113 mahalanobis -- returns Mahalanobis' D-square distance between the | |
1114 multivariate samples X and Y, which must have the | |
1115 same number of components (columns), but may have | |
1116 a different number of observations (rows) | |
1117 ols -- ordinary least squares estimation | |
1118 pinv -- returns the pseudoinverse of X; singular values | |
1119 less than tol are ignored | |
1120 skewness -- skewness (x) = N^(-1) std(x)^(-3) SUM_i (x(i)-mean(x))^3 | |
1121 if x is a matrix, return the row vector containing | |
1122 the skewness of each column | |
1123 | |
1124 * Errors in user-supplied functions called from dassl, fsolve, | |
1125 lsode, npsol, and quad are handled more gracefully. | |
1126 | |
1127 * Programming errors in the use of the C++ classes within Octave | |
1128 should no longer cause Octave to abort. Instead, Octave's error | |
1129 handler function is called and execution continues as best as is | |
1130 possible. This should result in eventually returning control to | |
1131 the top-level Octave prompt. (It would be nice to have a real | |
1132 exception handling mechanism...) | |
1133 | |
1134 * A number of memory leaks have been eliminated. Thanks to | |
1135 Fong Kin Fui <fui@ee.nus.sg> for reporting them. | |
1136 | |
1137 * The C++ matrix classes are now derived from a generic | |
1138 template-based array class. | |
1139 | |
1140 * The readline function operate-and-get-next (from bash) is now | |
1141 available and bound to C-O by default. | |
1142 | |
1143 * Octave now uses the version of readline currently distributed with | |
1144 bash-1.13. On some systems, interactive invocations of Octave | |
1145 will now blink the cursor to show matching parens. | |
1146 | |
1147 * By default, include files are now installed in | |
1148 $prefix/include/octave instead of $prefix/include. | |
1149 | |
1150 * Octave now uses a config.h file instead of putting all defines on | |
1151 the compiler command line. | |
1152 | |
1153 Summary of changes for version 0.79: | |
1154 ----------------------------------- | |
1155 | |
1156 * New control systems functions: | |
1157 | |
1158 dgram -- Returns the discrete controllability and observability gramian. | |
1159 dlqr -- Discrete linear quadratic regulator design. | |
1160 dlqe -- Discrete linear quadratic estimator (Kalman Filter) design. | |
1161 c2d -- Convert continuous system description to discrete time | |
1162 description assuming zero-order hold and given sample time. | |
1163 | |
1164 * The max (min) functions can now return the index of the max (min) | |
1165 value as a second return value. | |
1166 | |
1167 Summary of changes for version 0.78: | |
1168 ----------------------------------- | |
1169 | |
1170 * Octave's handling of global variables has been completely | |
1171 rewritten. To access global variables inside a function, you must | |
1172 now declare them to be global within the function body. Likewise, | |
1173 if you do not declare a variable as global at the command line, | |
1174 you will not have access to it within a function, even if it is | |
1175 declared global there. For example, given the function | |
1176 | |
1177 function f () | |
1178 global x = 1; | |
1179 y = 2; | |
1180 endfunction | |
1181 | |
1182 the global variable `x' is not visible at the top level until the | |
1183 command | |
1184 | |
1185 octave:13> global x | |
1186 | |
1187 has been evaluated, and the variable `y' remains local to the | |
1188 function f() even if it is declared global at the top level. | |
1189 | |
1190 Clearing a global variable at the top level will remove its global | |
1191 scope and leave it undefined. For example, | |
1192 | |
1193 octave:1> function f () # Define a function that accesses | |
1194 > global x; # the global variable `x'. | |
1195 > x | |
1196 > endfunction | |
1197 octave:2> global x = 1 # Give the variable `x' a value. | |
1198 octave:3> f () # Evaluating the function accesses the | |
1199 x = 1 # global `x'. | |
1200 octave:4> clear x # Remove `x' from global scope, clear value. | |
1201 octave:5> x = 2 # Define new local `x' at the top level | |
1202 x = 2 | |
1203 octave:6> f # The global `x' is no longer defined. | |
1204 error: `x' undefined near line 1 column 25 | |
1205 error: evaluating expression near line 1, column 25 | |
1206 error: called from `f' | |
1207 octave:7> x # But the local one is. | |
1208 x = 2 | |
1209 | |
1210 * The new function, `is_global (string)' returns 1 if the variable | |
1211 named by string is globally visible. Otherwise, returns 0. | |
1212 | |
1213 * The implementation of `who' has changed. It now accepts the | |
1214 following options: | |
1215 | |
1216 -b -builtins -- display info for built-in variables and functions | |
1217 -f -functions -- display info for currently compiled functions | |
1218 -v -variables -- display info for user variables | |
1219 -l -long -- display long info | |
1220 | |
1221 The long output looks like this: | |
1222 | |
1223 octave:5> who -l | |
1224 | |
1225 *** currently compiled functions: | |
1226 | |
1227 prot type rows cols name | |
1228 ==== ==== ==== ==== ==== | |
1229 wd user function - - f | |
1230 | |
1231 *** local user variables: | |
1232 | |
1233 prot type rows cols name | |
1234 ==== ==== ==== ==== ==== | |
1235 wd real scalar 1 1 y | |
1236 | |
1237 *** globally visible user variables: | |
1238 | |
1239 prot type rows cols name | |
1240 ==== ==== ==== ==== ==== | |
1241 wd complex matrix 13 13 x | |
1242 | |
1243 where the first character of the `protection' field is `w' if the | |
1244 symbol can be redefined, and `-' if it has read-only access. The | |
1245 second character may be `d' if the symbol can be deleted, or `-' | |
1246 if the symbol cannot be cleared. | |
1247 | |
1248 * The new built-in variable ignore_function_time_stamp can be used | |
1249 to prevent Octave from calling stat() each time it looks up | |
1250 functions defined in M-files. If set to "system", Octave will not | |
1251 automatically recompile M-files in subdirectories of | |
1252 $OCTAVE_HOME/lib/VERSION if they have changed since they were last | |
1253 compiled, but will recompile other M-files in the LOADPATH if they | |
1254 change. If set to "all", Octave will not recompile any M-files | |
1255 unless their definitions are removed with clear. For any other | |
1256 value of ignore_function_time_stamp, Octave will always check to | |
1257 see if functions defined in M-files need to recompiled. The | |
1258 default value of ignore_function_time_stamp is "system". | |
1259 | |
1260 * The new built-in variable EDITOR can be used to specify the editor | |
1261 for the edit_history command. It is set to the value of the | |
1262 environment variable EDITOR, or `vi' if EDITOR is not set, or is | |
1263 empty. | |
1264 | |
1265 * There is a new built-in variable, INFO_FILE, which is used as the | |
1266 location of the info file. Its initial value is | |
1267 $OCTAVE_HOME/info/octave.info, so `help -i' should now work | |
1268 provided that OCTAVE_HOME is set correctly, even if Octave is | |
1269 installed in a directory different from that specified at compile | |
1270 time. | |
1271 | |
1272 * There is a new command line option, --info-file FILE, that may be | |
1273 used to set Octave's idea of the location of the info file. It | |
1274 will override any value of OCTAVE_INFO_FILE found in the | |
1275 environment, but not any INFO_FILE="filename" commands found in | |
1276 the system or user startup files. | |
1277 | |
1278 * Octave's Info reader will now recognize gzipped files that have | |
1279 names ending in `.gz'. | |
1280 | |
1281 * The save command now accepts regular expressions as arguments. | |
1282 Note that these patterns are regular expressions, and do not work | |
1283 like filename globbing. For example, given the variables `a', | |
1284 `aa', and `a1', the command `save a*' saves `a' and `aa' but not | |
1285 `a1'. To match all variables beginning with `a', you must use an | |
1286 expression like `a.*' (match all sequences beginning with `a' | |
1287 followed by zero or more characters). | |
1288 | |
1289 * Line and column information is included in more error messages. | |
1290 | |
1291 Summary of changes for version 0.77: | |
1292 ----------------------------------- | |
1293 | |
1294 * Improved help. The command `help -i topic' now uses the GNU Info | |
1295 browser to display help for the given topic directly from the | |
1296 Texinfo documenation. | |
1297 | |
1298 * New function: chol -- Cholesky factorization. | |
1299 | |
1300 Summary of changes for version 0.76: | |
1301 ----------------------------------- | |
1302 | |
1303 * Better run-time error messages. Many now include line and column | |
1304 information indicating where the error occurred. Octave will also | |
1305 print a traceback for errors occurring inside functions. If you | |
1306 find error messages that could use improvement, or errors that | |
1307 Octave fails to catch, please send a bug report to | |
1308 bug-octave@bevo.che.wisc.edu. | |
1309 | |
1310 * If gplot (or gsplot) is given a string to plot, and the string | |
1311 does not name a file, Octave will pass the string along to gnuplot | |
1312 directly. This allows commands like | |
1313 | |
1314 gplot "sin (x)" w l, data w p | |
1315 | |
1316 to work (assuming that data is a variable containing a matrix of | |
1317 values). | |
1318 | |
1319 * Long options (--help, --version, etc.) are supported. | |
1320 | |
1321 Summary of changes for version 0.75: | |
1322 ----------------------------------- | |
1323 | |
1324 * The documentation is much more complete, but still could use a lot | |
1325 of work. | |
1326 | |
1327 * The history function now prints line numbers by default. The | |
1328 command `history -q' will omit them. | |
1329 | |
1330 * The clear function now accepts regular expressions. | |
1331 | |
1332 * If gplot (or gsplot) is given a string to plot, and the string | |
1333 names a file, Octave attempts to plot the contents of the file. | |
1334 | |
1335 * New functions: | |
1336 | |
1337 history: | |
1338 | |
1339 run_history -- run commands from the history list. | |
1340 edit_history -- edit commands from the history list with your | |
1341 favorite editor. | |
1342 | |
1343 linear algebra: | |
1344 | |
1345 balance -- Balancing for algebraic and generalized | |
1346 eigenvalue problems. | |
1347 givens -- Givens rotation. | |
1348 is_square -- Check to see if a matrix is square. | |
1349 qzhess -- QZ decomposition of the matrix pencil (a - lambda b). | |
1350 qzval -- Generalized eigenvalues for real matrices. | |
1351 syl -- Sylvester equation solver. | |
1352 | |
1353 control systems: | |
1354 | |
1355 is_symmetric -- Check to see if a matrix is symmetric. | |
1356 abcddim -- Check dimensions of linear dynamic system [A,B,C,D]. | |
1357 is_controllable -- Check to see if [A,B,C,D] is controllable. | |
1358 is_observable -- Check to see if [A,B,C,D] is observable. | |
1359 are -- Solve algebraic Ricatti equation. | |
1360 dare -- Solve discrete-time algebraic Ricatti equation. | |
1361 lqe -- Kalman filter design for continuous linear system. | |
1362 lqr -- Linear Quadratic Regulator design. | |
1363 lyap -- Solve Lyapunov equation. | |
1364 dlyap -- Solve discrete Lyapunov equation. | |
1365 tzero -- Compute the transmission zeros of [A,B,C,D]. | |
1366 | |
1367 Summary of changes for version 0.74: | |
1368 ----------------------------------- | |
1369 | |
1370 * Formal parameters to functions are now always considered to be | |
1371 local variables, so things like | |
1372 | |
1373 global x = 0 | |
1374 global y = 0 | |
1375 function y = f (x) x = 1; y = x; end | |
1376 f (x) | |
1377 | |
1378 result in the function returning 1, with the global values of x | |
1379 and y unchanged. | |
1380 | |
1381 * Multiple assignment expressions are now allowed to take indices, | |
1382 so things like | |
1383 | |
1384 octave:13> [a([1,2],[3,4]), b([5,6],[7,8])] = lu ([1,2;3,4]) | |
1385 | |
1386 will work correctly. | |
1387 | |
1388 Summary of changes for version 0.73: | |
1389 ----------------------------------- | |
1390 | |
1391 * Saving and loading global variables works correctly now. | |
1392 | |
1393 * The save command no longer saves built-in variables. | |
1394 | |
1395 * Global variables are more reliable. | |
1396 | |
1397 * Matrices may now have one or both dimensions zero, so that | |
1398 operations on empty matrices are now handled more consistently. | |
1399 | |
1400 By default, dimensions of the empty matrix are now printed along | |
1401 with the empty matrix symbol, `[]'. For example: | |
1402 | |
1403 octave:13> zeros (3, 0) | |
1404 ans = | |
1405 | |
1406 [](3x0) | |
1407 | |
1408 The new variable `print_empty_dimensions' controls this behavior. | |
1409 | |
1410 See also Carl de Boor, An Empty Exercise, SIGNUM, Volume 25, | |
1411 pages 2--6, 1990, or C. N. Nett and W. M. Haddad, A | |
1412 System-Theoretic Appropriate Realization of the Empty Matrix | |
1413 Concept, IEEE Transactions on Automatic Control, Volume 38, | |
1414 Number 5, May 1993. | |
1415 | |
1416 * The right and left division operators `/' and `\' will now find a | |
1417 minimum norm solution if the system is not square, or if the | |
1418 coefficient matrix is singular. | |
1419 | |
1420 * New functions: | |
1421 | |
1422 hess -- Hessenberg decomposition | |
1423 schur -- Ordered Schur factorization | |
1424 perror -- print error messages corresponding to error codes | |
1425 returned from the functions fsolve, npsol, and qpsol | |
1426 (with others to possibly be added later). | |
1427 | |
1428 * Octave now prints a warning if it finds anything other than | |
1429 whitespace or comments after the final `end' or `endfunction' | |
1430 statement. | |
1431 | |
1432 * The bodies of functions, and the for, while, and if commands are | |
1433 now allowed to be empty. | |
1434 | |
1435 * Support for Gill and Murray's QPSOL has been added. Like NPSOL, | |
1436 QPSOL is not freely redistributable either, so you must obtain | |
1437 your own copy to be able to use this feature. More information | |
1438 about where to find QPSOL and NPSOL are in the file README.NLP. | |
1439 | |
1440 Summary of changes for version 0.72: | |
1441 ----------------------------------- | |
1442 | |
1443 * For numeric output, columns are now lined up on the decimal point. | |
1444 (This requires libg++-2.3.1 or later to work correctly). | |
1445 | |
1446 * If octave is running interactively and the output intended for the | |
1447 screen is longer than one page and a pager is available, it is | |
1448 sent to the pager through a pipe. You may specify the program to | |
1449 use as the pager by setting the variable PAGER. PAGER may also | |
1450 specify a command pipeline. | |
1451 | |
1452 * Spaces are not always significant inside square brackets now, so | |
1453 commands like | |
1454 | |
1455 [ linspace (1, 2) ] | |
1456 | |
1457 will work. However, some possible sources of confusion remain | |
1458 because Octave tries (possibly too hard) to determine exactly what | |
1459 operation is intended from the context surrounding an operator. | |
1460 For example: | |
1461 | |
1462 -- In the command | |
1463 | |
1464 [ 1 - 1 ] | |
1465 | |
1466 the `-' is treated as a binary operator and the result is the | |
1467 scalar 0, but in the command | |
1468 | |
1469 [ 1 -1 ] | |
1470 | |
1471 the `-' is treated as a unary operator and the result is the | |
1472 vector [ 1 -1 ]. | |
1473 | |
1474 -- In the command | |
1475 | |
1476 a = 1; [ 1 a' ] | |
1477 | |
1478 the single quote character `'' is treated as a transpose operator | |
1479 and the result is the vector [ 1 1 ], but in the command | |
1480 | |
1481 a = 1; [ 1 a ' ] | |
1482 | |
1483 an error message indicating an unterminated string constant is | |
1484 printed. | |
1485 | |
1486 * Assignments are just expressions now, so they are valid anywhere | |
1487 other expressions are. This means that things like | |
1488 | |
1489 if (a = n < m) ... endif | |
1490 | |
1491 are valid. This is parsed as: compare `n < m', assign the result | |
1492 to the variable `a', and use it as the test expression in the if | |
1493 statement. | |
1494 | |
1495 To help avoid errors where `=' has been used but `==' was | |
1496 intended, Octave issues a warning suggesting parenthesis around | |
1497 assignments used as truth values. You can suppress this warning | |
1498 by adding parenthesis, or by setting the value of the new built-in | |
1499 variable `warn_assign_as_truth_value' to 'false' (the default | |
1500 value is 'true'). | |
1501 | |
1502 This is also true for multiple assignments, so expressions like | |
1503 | |
1504 [a, b, c] = [u, s, v] = expression | |
1505 | |
1506 are now possible. If the expression is a function, nargout is set | |
1507 to the number of arguments for the right-most assignment. The | |
1508 other assignments need not contain the same number of elements. | |
1509 Extra left hand side variables in an assignment become undefined. | |
1510 | |
1511 * The default line style for plots is now `lines' instead of | |
1512 `points'. To change it, use the `set data style STYLE' command. | |
1513 | |
1514 * New file handling and I/O functions: | |
1515 | |
1516 fopen -- open a file for reading or writing | |
1517 fclose -- close a file | |
1518 fflush -- flush output to a file | |
1519 fgets -- read characters from a file | |
1520 frewind -- set file position to the beginning of a file | |
1521 fseek -- set file position | |
1522 ftell -- tell file position | |
1523 freport -- print a report for all open files | |
1524 fscanf -- read from a file | |
1525 sscanf -- read from a string | |
1526 scanf -- read from the standard input | |
1527 | |
1528 * New built-in variables for file and I/O functions: | |
1529 | |
1530 stdin -- file number corresponding to the standard input stream. | |
1531 stdout -- file number corresponding to the standard output stream. | |
1532 stderr -- file number corresponding to the standard error stream. | |
1533 | |
1534 The following may be used as the final (optional) argument for | |
1535 fseek: | |
1536 | |
1537 SEEK_SET -- set position relative to the beginning of the file. | |
1538 SEEK_CUR -- set position relative to the current position. | |
1539 SEEK_END -- set position relative to the end of the file. | |
1540 | |
1541 * New function: setstr -- convert vectors or scalars to strings | |
1542 (doesn't work for matrices yet). | |
1543 | |
1544 * If possible, computer now prints the system type instead of | |
1545 always printing `Hi Dave, I'm a HAL-9000'. | |
1546 | |
1547 * Octave now properly saves and restores its internal state | |
1548 correctly in more places. Interrupting Octave while it is | |
1549 executing a script file no longer causes it to exit. | |
1550 | |
1551 * Octave now does tilde expansion on each element of the LOADPATH. | |
1552 | |
1553 * A number of memory leaks have been plugged. | |
1554 | |
1555 * Dependencies for C++ source files are now generated automatically | |
1556 by g++. | |
1557 | |
1558 * There is a new command line option, -p PATH, that may be used to | |
1559 set Octave's loadpath from the command line. It will override any | |
1560 value of OCTAVE_PATH found in the environment, but not any | |
1561 LOADPATH="path" commands found in the system or user startup files. | |
1562 | |
1563 * It is now possible to override Octave's default idea of the | |
1564 location of the system-wide startup file (usually stored in | |
1565 $(prefix)/lib/octave/octaverc) using the environment variable | |
1566 OCTAVE_HOME. If OCTAVE_HOME has a value, Octave will look for | |
1567 octaverc and its M-files in the directory $OCTAVE_HOME/lib/octave. | |
1568 | |
1569 This allows people who are using binary distributions (as is | |
1570 common with systems like Linux) to install the real octave binary | |
1571 in any directory (using a name like octave.bin) and then install | |
1572 a simple script like this | |
1573 | |
1574 #!/bin/sh | |
1575 OCTAVE_HOME=/foo/bar/baz | |
1576 export OCTAVE_HOME | |
1577 exec octave.bin | |
1578 | |
1579 to be invoked as octave. | |
1580 | |
1581 | |
1582 Summary of changes for version 0.71: | |
1583 ----------------------------------- | |
1584 | |
1585 * Much improved plotting facility. With this release, Octave does | |
1586 not require a specially modified version of gnuplot, so gnuplot | |
1587 sources are no longer distributed with Octave. For a more | |
1588 detailed description of the new plotting features, see the file | |
1589 PLOTTING. | |
1590 | |
1591 * New plotting commands: | |
1592 | |
1593 plot -- 2D plots | |
1594 semilogx -- 2D semilog plot with logscale on the x axis | |
1595 semilogy -- 2D semilog plot with logscale on the y axis | |
1596 loglog -- 2D log-log plot | |
1597 mesh -- 3D mesh plot | |
1598 meshdom -- create matrices for 3D plotting from two vectors | |
1599 contour -- contour plots of 3D data | |
1600 bar -- create bar graphs | |
1601 stairs -- create stairstep plots | |
1602 polar -- 2D plots from theta-R data | |
1603 grid -- turn plot grid lines on or off | |
1604 xlabel, ylabel -- place labels on the x and y axes of 2D plots | |
1605 sombrero -- demonstrate 3D plotting | |
1606 gplot -- 2D plot command with gnuplot-like syntax | |
1607 gsplot -- 3D plot command with gnuplot-like syntax | |
1608 set -- set plot options with gnuplot syntax | |
1609 show -- show plot options with gnuplot syntax | |
1610 closeplot -- close stream to gnuplot process | |
1611 purge_tmp_files -- delete temporary files created by plot command | |
1612 | |
1613 * Other new commands: | |
1614 | |
1615 ls, dir -- print a directory listing | |
1616 shell_cmd -- execute shell commands | |
1617 keyboard -- get input from keyboard, useful for debugging | |
1618 menu -- display a menu of options and ask for input | |
1619 fft -- fast fourier transform | |
1620 ifft -- inverse fast fourier transform | |
1621 | |
1622 * Strings may be enclosed in either single or double quote | |
1623 characters. Double quote characters are not special within single | |
1624 quote strings, and single quotes are not special within double | |
1625 quote strings. | |
1626 | |
1627 * Command name completion now works for M-file names too. | |
1628 | |
1629 * Better help and usage messages for many functions. | |
1630 | |
1631 * Help is now available for functions defined in M-files. The first | |
1632 block of comments is taken as the text of the help message. | |
1633 | |
1634 * Numerous changes in preparation to support dynamic loading of | |
1635 object files with dld. | |
1636 | |
1637 * Bug fixes to make solving DAEs with dassl actually work. | |
1638 | |
1639 * The command `save file' now saves all variables in the named file. | |
1640 | |
1641 * If do_fortran_indexing is 'true', indexing a scalar with | |
1642 [1,1,1,...] (n times) replicates its value n times. The | |
1643 orientation of the resulting vector depends on the value of | |
1644 prefer_column_vectors. | |
1645 | |
1646 * Things like [[1,2][3,4]] no longer cause core dumps, and invalid | |
1647 input like [1,2;3,4,[5,6]] now produces a diagnositic message. | |
1648 | |
1649 * The cd, save, and load commands now do tilde expansion. | |
1650 | |
1651 * It's now possible to clear global variables and functions by name. | |
1652 | |
1653 * Use of clear inside functions is now a parse error. | |
1654 | |
1655 Summary of changes for version 0.70: | |
1656 ----------------------------------- | |
1657 | |
1658 * Better parse error diagnostics. For interactive input, you get | |
1659 messages like | |
1660 | |
1661 octave:1> a = 3 + * 4; | |
1662 | |
1663 parse error: | |
1664 | |
1665 a = 3 + * 4; | |
1666 ^ | |
1667 | |
1668 and for script files, the message includes the file name and input | |
1669 line number: | |
1670 | |
1671 octave:1> foo | |
1672 | |
1673 parse error near line 4 of file foo.m: | |
1674 | |
1675 a = 3 + * 4; | |
1676 ^ | |
1677 | |
1678 * New built-in variable PS2 which is used as the secondary prompt. | |
1679 The default value is '> '. | |
1680 | |
1681 * New file, octave-mode.el, for editing Octave code with GNU Emacs. | |
1682 This is a modified version of Matthew R. Wette's matlab-mode.el. | |
1683 | |
1684 * Better support for missing math functions. | |
1685 | |
1686 * User preferences are now cached in a global struct so we don't | |
1687 have to do a symbol table lookup each time we need to know what | |
1688 they are. This should mean slightly improved performance for | |
1689 evaluating expressions. | |
1690 | |
1691 Summary of changes for version 0.69: | |
1692 ----------------------------------- | |
1693 | |
1694 * Multiple assignments are now possible, so statements like | |
1695 | |
1696 a = b = c = 3; | |
1697 a = b = c = [1,2;3,4]; | |
1698 | |
1699 or | |
1700 | |
1701 c = (a = (b = 2) * 3 + 4) * 5 | |
1702 | |
1703 are legal, as are things that have even more bizarre effects, like | |
1704 | |
1705 a(4:6,4:6) = b(2:3,2:3) = [1,2;3,4]; | |
1706 | |
1707 (try it). | |
1708 | |
1709 * Improved parsing of strings (but they still don't work as matrix | |
1710 elements). | |
1711 | |
1712 * An M-file may now either define a function or be a list of | |
1713 commands to execute. | |
1714 | |
1715 * Better detection and conditional compilation of IEEE functions | |
1716 isinf, finite, and isnan. | |
1717 | |
1718 * Replacements for acosh, asinh, atanh, and gamma from the BSD math | |
1719 library for those systems that don't have them. | |
1720 | |
1721 Summary of changes for version 0.68: | |
1722 ----------------------------------- | |
1723 | |
1724 * New functions: | |
1725 | |
1726 eval -- evaluate a string as a sequence of Octave commands. | |
1727 input -- print a prompt and get user input. | |
1728 | |
1729 Summary of changes for version 0.67: | |
1730 ----------------------------------- | |
1731 | |
1732 * New functions: | |
1733 | |
1734 find -- return the indices of nonzero elements. | |
1735 | |
1736 * Zero-one style indexing now works. For example, | |
1737 | |
1738 a = [1,2,3,4]; | |
1739 b = a([1,0,0,1]) | |
1740 | |
1741 sets b to the first and fourth elememnts of a. | |
1742 | |
1743 Zero-one style indexing also works for indexing the left hand side | |
1744 of an assignment. For example, | |
1745 | |
1746 a = rand (1,2;3,4); | |
1747 a([0,1],:) = [-1,-2] | |
1748 | |
1749 sets the second row of a to [-1 -2] | |
1750 | |
1751 The behavior for the ambiguous case | |
1752 | |
1753 a = [1,2,3,4]; | |
1754 b = a([1,1,1,1]); | |
1755 | |
1756 is controlled by the new global variable `prefer_zero_one_indexing'. | |
1757 If this variable is equal to 'true', b will be set to [1 2 3 4]. | |
1758 If it is false, b will be set to [1 1 1 1]. The default value is | |
1759 'false'. | |
1760 | |
1761 * Using the new global variable `propagate_empty_matrices', it is | |
1762 possible to have unary andy binary operations on empty matrices | |
1763 return an empty matrix. The default value of this variable is | |
1764 'warn', so that empty matrices are propagated but you get a | |
1765 warning. Some functions, like eig and svd have also been changed | |
1766 to handle this. | |
1767 | |
1768 * Empty matrices can be used in conditionals, but they always | |
1769 evaluate to `false'. With propagate_empty_matrices = 'true', both | |
1770 of the following expressions print 0: | |
1771 | |
1772 if [], 1, else 0, end | |
1773 if ~[], 1, else 0, end | |
1774 | |
1775 * Octave no longer converts input like `3.2 i' or `3 I' to complex | |
1776 constants directly because that causes problems inside square | |
1777 brackets, where spaces are important. This abbreviated notation | |
1778 *does* work if there isn't a space between the number and the i, | |
1779 I, j, or J. | |
1780 | |
1781 Summary of changes for version 0.66: | |
1782 ----------------------------------- | |
1783 | |
1784 * Logical unary not operator (~ or !) now works for complex. | |
1785 | |
1786 * Left division works. | |
1787 | |
1788 * Right and left element by element division should work correctly | |
1789 now. | |
1790 | |
1791 * Numbers like .3e+2 are no longer errors. | |
1792 | |
1793 * Indexing a matrix with a complex value doesn't cause a core dump. | |
1794 | |
1795 * The min and max functions should work correctly for two arguments. | |
1796 | |
1797 * Improved (I hope!) configuration checks. | |
1798 | |
1799 * Octave is now installed as octave-M.N, where M and N are version | |
1800 numbers, and octave is a link to that file. This makes it | |
1801 possible to have more than one version of the interpreter installed. | |
1802 | |
1803 Summary of changes for version 0.63: | |
1804 ----------------------------------- | |
1805 | |
1806 * The reshape function works again. | |
1807 | |
1808 * Octave now converts input like `3.2i' or `3 I' or `2.3e5 j' to be | |
1809 complex constants directly, rather than requiring an expression | |
1810 like `3.3 * i' to be evaluated. | |
1811 | |
1812 Summary of changes for version 0.61: | |
1813 ----------------------------------- | |
1814 | |
1815 * Octave has been successfully compiled using gcc 2.3.3 and libg++ 2.3. | |
1816 on a 486 system running Linux. | |
1817 | |
1818 * The win_texas_lotto function is now called texas_lotto (it's a | |
1819 script file, and win_texas_lotto.m is too long for some Linux and | |
1820 System V systems). | |
1821 | |
1822 Summary of changes for version 0.57: | |
1823 ------------------------------------ | |
1824 | |
1825 * The C-like formatted print functions printf, fprintf, and sprintf | |
1826 finally work. | |
1827 | |
1828 Summary of changes for version 0.56: | |
1829 ------------------------------------ | |
1830 | |
1831 * By default, octave prints a short disclaimer when it starts. | |
1832 (You can suppress it by invoking octave with -q). | |
1833 | |
1834 * You can keep octave from reading your ~/.octaverc and .octaverc | |
1835 files by invoking it with -f. | |
1836 | |
1837 * When returning two values, eig now returns [v, d] instead of | |
1838 [lambda, v], where d is a diagonal matrix made from lambda. | |
1839 | |
1840 * The win_texas_lotto function now produces a sorted list. | |
1841 | |
1842 * New functions: | |
1843 | |
1844 expm -- matrix exponential. | |
1845 logm -- matrix logarithm. | |
1846 | |
1847 Summary of changes for version 0.55: | |
1848 ------------------------------------ | |
1849 | |
1850 * The following (C-style) backslash escape sequences work in quoted | |
1851 strings (useful(?) with printf()): | |
1852 | |
1853 \a bell \r carriage return | |
1854 \b backspace \t horizontal tab | |
1855 \f formfeed \v vertical tab | |
1856 \n newline \\ backslash | |
1857 | |
1858 * Use of `...' at the end of a line will allow a statement to | |
1859 continue over more than one line. | |
1860 | |
1861 * The names `inf' and `nan' are now aliases for `Inf' and `NaN', | |
1862 respectively. | |
1863 | |
1864 * New functions: | |
1865 | |
1866 casesen -- print a warning if the luser tries to turn off case | |
1867 sensitivity. | |
1868 median -- find median value. | |
1869 norm -- compute the norm of a matrix. | |
1870 sort -- sort columns. | |
1871 | |
1872 * New variable, `silent_functions'. If silent_functions == 'true', | |
1873 the results of expressions are not printed even if they are not | |
1874 followed by a semicolon. The disp() and printf() functions still | |
1875 result in output. The default value for this variable is 'false'. | |
1876 | |
1877 * New variable `return_last_value_computed'. If it is 'true', | |
1878 functions defined in script files return the last value computed | |
1879 if a return value has not been explicitly declared. The default | |
1880 value for this variable is 'false'. | |
1881 | |
1882 Summary of changes for version 0.52: | |
1883 ------------------------------------ | |
1884 | |
1885 * Name completion works for function and variable names currently in | |
1886 the symbol tables. Coming soon: completion for names of functions | |
1887 defined in script files but not yet compiled. | |
1888 | |
1889 * The initial value of do_fortran_indexing is now false, and the | |
1890 initial value of prefer_column_vectors is now true. Swap the | |
1891 values of these variables if you want behavior that is more like | |
1892 Matlab. | |
1893 | |
1894 * All script files check the number of input arguments before doing | |
1895 much real work. | |
1896 | |
1897 * The identifiers `i' and `j' are now also names for sqrt(-1). | |
1898 These symbols may be used for other purposes, but their original | |
1899 definition will reappear if they are cleared. | |
1900 | |
1901 * The symbol tables are now implemented with hash tables for faster | |
1902 searching. | |
1903 | |
1904 * A small amount of help is now available for most built-in | |
1905 operators, keywords and functions. Coming soon: help for script | |
1906 files. | |
1907 | |
1908 * Without any arguments, the help command now lists all known | |
1909 built-in operators, keywords and functions. | |
1910 | |
1911 * Generic parse errors are now signalled by `Eh, what's up doc?', | |
1912 which is closer to what Bugs actually says. | |
1913 | |
1914 * The who command now only prints variable names by default. | |
1915 Use the -fcn (or -fcns, or -functions) switch to print the names of | |
1916 built-in or currently compiled functions. | |
1917 | |
1918 Summary of changes for version 0.51: | |
1919 ------------------------------------ | |
1920 | |
1921 * Major overhaul of array indexing. | |
1922 | |
1923 * The colloc function actually works now. | |
1924 | |
1925 Summary of changes for version 0.50: | |
1926 ------------------------------------ | |
1927 | |
1928 * The lsode and dassl functions now return the states only, | |
1929 instead of the time and the states, so you must keep track of | |
1930 the corresponding times (this is easy though, because you have | |
1931 to specify a vector of desired output times anyway). | |
1932 | |
1933 * Solution of NLPs with NPSOL now works on the SPARC. | |
1934 | |
1935 * New keywords `endif', `endfor', `endfunction', `endif', and | |
1936 `endwhile', which allow for better diagnostics. The `end' keyword | |
1937 is still recognized. All script files have been changed to use | |
1938 these new keywords in place of `end'. | |
1939 | |
1940 * It is now possible to uninstall Octave by doing a `make uninstall' | |
1941 in the top level directory. | |
1942 | |
1943 * The Makefiles are much closer to conforming with GNU coding standards. | |
1944 | |
1945 * New functions: | |
1946 | |
1947 win_texas_lotto -- produce six unique random numbers between 1 and 50. | |
1948 quad -- numerical integration. | |
1949 lu -- LU factorization | |
1950 qr -- QR factorization | |
1951 dassl -- Solution of DAEs using DASSL. | |
1952 | |
1953 * New files: | |
1954 | |
1955 THANKS -- A list of people and organazations who have supported | |
1956 the development of Octave. | |
1957 | |
1958 NEWS -- This file, listing recent changes. | |
1959 | |
1960 * Help is now available at the gnuplot prompt. |