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