comparison NEWS @ 2330:12ff450cbb1f

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