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