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>