comparison etc/NEWS.3 @ 18048:46c131e5676e

NEWS: Save old NEWS in NEWS.3. New NEWS file for 4.0 release. * NEWS: Update NEWS to describe 4.0 release. * etc/NEWS.3: Copy down 3.X relevant information from NEWS file
author Rik <rik@octave.org>
date Mon, 02 Dec 2013 13:07:38 -0800
parents b67c2d580a25
children 3fef9a2d2550
comparison
equal deleted inserted replaced
18047:bc0195254fdb 18048:46c131e5676e
1 Summary of important user-visible changes for version 3.8:
2 ---------------------------------------------------------
3
4 ** One of the biggest new features for Octave 3.8 is a graphical user
5 interface. It is the one thing that users have requested most
6 often over the last few years and now it is almost ready. But
7 because it is not quite as polished as we would like, we have
8 decided to wait until the 4.0.x release series before making the
9 GUI the default interface (until then, you can use the --force-gui
10 option to start the GUI).
11
12 Given the length of time and the number of bug fixes and
13 improvements since the last major release Octave, we also decided
14 against delaying the release of all these new improvements any
15 longer just to perfect the GUI. So please enjoy the 3.8 release of
16 Octave and the preview of the new GUI. We believe it is working
17 reasonably well, but we also know that there are some obvious rough
18 spots and many things that could be improved.
19
20 WE NEED YOUR HELP. There are many ways that you can help us fix
21 the remaining problems, complete the GUI, and improve the overall
22 user experience for both novices and experts alike:
23
24 * If you are a skilled software developer, you can help by
25 contributing your time to help with Octave's development. See
26 http://octave.org/get-involved.html for more information.
27
28 * If Octave does not work properly, you are encouraged
29 report the problems you find. See http://octave.org/bugs.html
30 for more information about how to report problems.
31
32 * Whether you are a user or developer, you can help to fund the
33 project. Octave development takes a lot of time and expertise.
34 Your contributions help to ensure that Octave will continue to
35 improve. See http://octave.org/donate.html for more details.
36
37 We hope you find Octave to be useful. Please help us make it even
38 better for the future!
39
40 ** Octave now uses OpenGL graphics by default with FLTK widgets. If
41 OpenGL libraries or FLTK widgets are not available when Octave is
42 built, gnuplot is used. You may also choose to use gnuplot for
43 graphics by executing the command
44
45 graphics_toolkit ("gnuplot")
46
47 Adding this command to your ~/.octaverc file will set the default
48 for each session.
49
50 ** Printing or saving figures with OpenGL graphics requires the
51 gl2ps library which is no longer distributed with Octave. The
52 software is widely available in most package managers. If a
53 pre-compiled package does not exist for your system, you can find
54 the current sources at http://www.geuz.org/gl2ps/.
55
56 ** Octave now supports nested functions with scoping rules that are
57 compatible with Matlab. A nested function is one declared and defined
58 within the body of another function. The nested function is only
59 accessible from within the enclosing function which makes it one
60 method for making private functions whose names do not conflict with those
61 in the global namespace (See also subfunctions and private functions).
62 In addition, variables in the enclosing function are visible within the
63 nested function. This makes it possible to have a pseudo-global variable
64 which can be seen by a group of functions, but which is not visible in
65 the global namespace.
66
67 Example:
68 function outerfunc (...)
69 ...
70 function nested1 (...)
71 ...
72 function nested2 (...)
73 ...
74 endfunction
75 endfunction
76
77 function nested3 (...)
78 ...
79 endfunction
80 endfunction
81
82 ** Line continuations inside character strings have changed.
83
84 The sequence '...' is no longer recognized as a line continuation
85 inside a character string. A backslash '\' followed by a newline
86 character is no longer recognized as a line continuation inside
87 single-quoted character strings. Inside double-quoted character
88 strings, a backslash followed by a newline character is still
89 recognized as a line continuation, but the backslash character must
90 be followed *immediately* by the newline character. No whitespace or
91 end-of-line comment may appear between them.
92
93 ** Backslash as a continuation marker outside of double-quoted strings
94 is now deprecated.
95
96 Using '\' as a continuation marker outside of double quoted strings
97 is now deprecated and will be removed from a future version of
98 Octave. When that is done, the behavior of
99
100 (a \
101 b)
102
103 will be consistent with other binary operators.
104
105 ** Redundant terminal comma accepted by parser
106
107 A redundant terminal comma is now accepted in matrix
108 definitions which allows writing code such as
109
110 [a,...
111 b,...
112 c,...
113 ] = deal (1,2,3)
114
115 ** Octave now has limited support for named exceptions
116
117 The following syntax is now accepted:
118
119 try
120 statements
121 catch exception-id
122 statements
123 end
124
125 The exception-id is a structure with the fields "message" and
126 "identifier". For example
127
128 try
129 error ("Octave:error-id", "error message");
130 catch myerr
131 printf ("identifier: %s\n", myerr.identifier);
132 printf ("message: %s\n", myerr.message);
133 end_try_catch
134
135 When classdef-style classes are added to Octave, the exception-id
136 will become an MException object.
137
138 ** Warning states may now be set temporarily, until the end of the
139 current function, using the syntax
140
141 warning STATE ID "local"
142
143 in which STATE may be "on", "off", or "error". Changes to warning
144 states that are set locally affect the current function and all
145 functions called from the current scope. The previous warning state
146 is restored on return from the current function. The "local"
147 option is ignored if used in the top-level workspace.
148
149 ** Warning IDs renamed:
150
151 Octave:array-as-scalar => Octave:array-to-scalar
152 Octave:array-as-vector => Octave:array-to-vector
153
154 ** 'emptymatch', 'noemptymatch' options added to regular expressions.
155
156 With this addition Octave now accepts the entire set of Matlab options
157 for regular expressions. 'noemptymatch' is the default, but 'emptymatch'
158 has certain uses where you need to match an assertion rather than actual
159 characters. For example,
160
161 regexprep ('World', '^', 'Hello ', 'emptymatch')
162 => Hello World
163
164 where the pattern is actually the assertion '^' or start-of-line.
165
166 ** For compatibility with Matlab, the regexp, regexpi, and regexprep
167 functions now process backslash escape sequences in single-quoted pattern
168 strings. In addition, the regexprep function now processes backslash
169 escapes in single-quoted replacement strings. For example,
170
171 regexprep (str, '\t', '\n')
172
173 would search the variable str for a TAB character (escape sequence \t)
174 and replace it with a NEWLINE (escape sequence \n). Previously the
175 expression would have searched for a literal '\' followed by 't' and
176 replaced the two characters with the sequence '\', 'n'.
177
178 ** A TeX parser has been implemented for the FLTK toolkit and is the default
179 for any text object including titles and axis labels. The TeX parser is
180 supported only for display on a monitor, not for printing.
181
182 A quick summary of features:
183
184 Code Feature Example Comment
185 -----------------------------------------------------------------
186 _ subscript H_2O formula for water
187 ^ exponent y=x^2 formula for parabola
188 \char symbol \beta Greek symbol beta
189 \fontname font \fontname{Arial} set Arial font
190 \fontsize fontsize \fontsize{16} set fontsize 16
191 \color[rgb] fontcolor \color[rgb]{1 0 1} set magenta color
192 \bf bold \bfBold Text bold font
193 \it italic \itItalic Text italic font
194 \sl slanted \slOblique Text slanted font
195 \rm normal \bfBold\rmNormal normal font
196 {} group {\bf Bold}Normal group objects
197 e^{i*\pi} = -1 group objects
198
199 ** The m-files in the plot directory have been overhauled.
200
201 The plot functions now produce output that is nearly visually compatible
202 with Matlab. Plot performance has also increased, dramatically for some
203 functions such as comet and waitbar. Finally, the documentation for most
204 functions has been updated so it should be clearer both how to use a
205 function and when a function is appropriate.
206
207 ** The m-files in the image directory have been overhauled.
208
209 The principal benefit is that Octave will now no longer automatically
210 convert images stored with integers to doubles. Storing images as uint8
211 or uint16 requires only 1/8 or 1/4 the memory of an image stored using
212 doubles. For certain operations, such as fft2, the image must still be
213 converted to double in order to work.
214
215 Other changes include fixes to the way indexed images are read from a
216 colormap depending on the image class (integer images have a -1 offset to
217 the colormap row number).
218
219 ** The imread and imwrite functions have been completely rewritten.
220
221 The main changes relate to the alpha channel, support for reading and
222 writing of floating point images, implemented writing of indexed images,
223 and appending images to multipage image files.
224
225 The issues that may arise due to backwards incompatibility are:
226
227 * imwrite no longer interprets a length of 2 or 4 in the third dimension
228 as grayscale or RGB with alpha channel (a length of 4 will be saved
229 as a CMYK image). Alpha channel must be passed as separate argument.
230
231 * imread will always return the colormap indexes when reading an indexed
232 image, even if the colormap is not requested as output.
233
234 * transparency values are now inverted from previous Octave versions
235 (0 is for completely transparent instead of completely opaque).
236
237 In addition, the function imformats has been implemented to expand
238 reading and writing of images of different formats through imread
239 and imwrite.
240
241 ** The colormap function now provides new options--"list", "register",
242 and "unregister"--to list all available colormap functions, and to
243 add or remove a function name from the list of known colormap
244 functions. Packages that implement extra colormaps should use these
245 commands with PKG_ADD and PKG_DEL statements.
246
247 ** strsplit has been modified to be compatible with Matlab. There
248 are two instances where backward compatibility is broken.
249
250 (1) Delimiters are now string vectors, not scalars.
251
252 Octave's legacy behavior
253
254 strsplit ("1 2, 3", ", ")
255 ans =
256 {
257 [1,1] = 1
258 [1,2] = 2
259 [1,3] =
260 [1,4] = 3
261 }
262
263 Matlab compatible behavior
264
265 strsplit ("1 2, 3", ", ")
266 ans =
267 {
268 [1,1] = 1 2
269 [1,2] = 3
270 }
271
272 (2) By default, Matlab treats consecutive delimiters as a single
273 delimiter. By default, Octave's legacy behavior was to return an
274 empty string for the part between the delmiters.
275
276 Where legacy behavior is desired, the call to strsplit() may be
277 replaced by ostrsplit(), which is Octave's original implementation of
278 strsplit().
279
280 ** The datevec function has been extended for better Matlab compatibility.
281 It now accepts string inputs in the following numerical formats: 12, 21,
282 22, 26, 29, 31. This is undocumented, but verifiable, Matlab behavior.
283 In addition, the default for formats which do not specify a date is
284 January 1st of the current year. The previous default was the current day,
285 month, and year. This may produce changes in existing scripts.
286
287 ** The error function and its derivatives has been extended to accept complex
288 arguments. The following functions now accept complex inputs:
289
290 erf erfc erfcx
291
292 In addition two new error functions erfi (imaginary error function) and
293 dawson (scaled imaginary error function) have been added.
294
295 ** The glpk function has been modified to reflect changes in the GLPK
296 library. The "round" and "itcnt" options have been removed. The
297 "relax" option has been replaced by the "rtest" option. The numeric
298 values of error codes and of some options have also changed.
299
300 ** The kurtosis function has changed definition to be compatible with
301 Matlab. It now returns the base kurtosis instead of the "excess kurtosis".
302 The old behavior can be had by changing scripts to normalize with -3.
303
304 "excess kurtosis" = kurtosis (x) - 3
305
306 ** The moment function has changed definition to be compatible with
307 Matlab. It now returns the central moment instead of the raw moment.
308 The old behavior can be had by passing the type argument "r" for raw.
309
310 ** The default name of the Octave crash dump file is now
311 "octave-workspace" instead of "octave-core". The exact name can
312 always be customized with the octave_core_file_name function.
313
314 ** A citation command has been added to display information on how to
315 cite Octave and packages in publications. The package system will
316 look for and install CITATION files from packages.
317
318 ** The java package from Octave Forge is now part of core Octave. The
319 following new functions are available for interacting with Java
320 directly from Octave:
321
322 debug_java java_matrix_autoconversion
323 isjava java_unsigned_autoconversion
324 java2mat javaaddpath
325 javaArray javaclasspath
326 javaMethod javamem
327 javaObject javarmpath
328 usejava
329
330 In addition, the following functions that use the Java interface
331 are now available (provided that Octave is compiled with support for
332 Java enabled):
333
334 helpdlg listdlg questdlg
335 inputdlg msgbox warndlg
336
337 ** Other new functions added in 3.8.0:
338
339 atan2d erfi lines
340 base64_decode expint linsolve
341 base64_encode findfigs missing_component_hook
342 betaincinv flintmax polyeig
343 built_in_docstrings_file fminsearch prefdir
344 cmpermute gallery preferences
345 cmunique gco readline_re_read_init_file
346 colorcube hdl2struct readline_read_init_file
347 copyobj history_save rgbplot
348 dawson imformats save_default_options
349 dblist importdata shrinkfaces
350 desktop isaxes splinefit
351 doc_cache_create iscolormap stemleaf
352 ellipj isequaln strjoin
353 ellipke jit_debug struct2hdl
354 erfcinv jit_enable tetramesh
355 jit_startcnt waterfall
356
357 ** Deprecated functions.
358
359 The following functions were deprecated in Octave 3.4 and have been
360 removed from Octave 3.8.
361
362 autocor dispatch is_global setstr
363 autocov fstat krylovb strerror
364 betai gammai perror values
365 cellidx glpkmex replot
366 cquad is_duplicate_entry saveimage
367
368 The following functions have been deprecated in Octave 3.8 and will
369 be removed from Octave 3.12 (or whatever version is the second major
370 release after 3.8):
371
372 default_save_options java_new
373 gen_doc_cache java_set
374 interp1q java_unsigned_conversion
375 isequalwithequalnans javafields
376 java_convert_matrix javamethods
377 java_debug re_read_readline_init_file
378 java_get read_readline_init_file
379 java_invoke saving_history
380
381
382 The following keywords have been deprecated in Octave 3.8 and will
383 be removed from Octave 3.12 (or whatever version is the second major
384 release after 3.8):
385
386 static
387
388 The following configuration variables have been deprecated in Octave
389 3.8 and will be removed from Octave 3.12 (or whatever version is the
390 second major release after 3.8):
391
392 CC_VERSION (now GCC_VERSION)
393 CXX_VERSION (now GXX_VERSION)
394
395 The internal class <Octave_map> has been deprecated in Octave 3.8 and will
396 be removed from Octave 3.12 (or whatever version is the second major
397 release after 3.8). Replacement classes are <octave_map> (struct array)
398 or <octave_scalar_map> for a single structure.
399
400 Summary of important user-visible changes for version 3.6:
401 ---------------------------------------------------------
402
403 ** The PCRE library is now required to build Octave. If a pre-compiled
404 package does not exist for your system, you can find PCRE sources
405 at http://www.pcre.org
406
407 ** The ARPACK library is no longer distributed with Octave.
408 If you need the eigs or svds functions you must provide an
409 external ARPACK through a package manager or by compiling it
410 yourself. If a pre-compiled package does not exist for your system,
411 you can find the current ARPACK sources at
412 http://forge.scilab.org/index.php/p/arpack-ng
413
414 ** Many of Octave's binary operators (.*, .^, +, -, ...) now perform
415 automatic broadcasting for array operations which allows you to use
416 operator notation instead of calling bsxfun or expanding arrays (and
417 unnecessarily wasting memory) with repmat or similar idioms. For
418 example, to scale the columns of a matrix by the elements of a row
419 vector, you may now write
420
421 rv .* M
422
423 In this expression, the number of elements of rv must match the
424 number of columns of M. The following operators are affected:
425
426 plus + .+
427 minus - .-
428 times .*
429 rdivide ./
430 ldivide .\
431 power .^ .**
432 lt <
433 le <=
434 eq ==
435 gt >
436 ge >=
437 ne != ~=
438 and &
439 or |
440 atan2
441 hypot
442 max
443 min
444 mod
445 rem
446 xor
447
448 additionally, since the A op= B assignment operators are equivalent
449 to A = A op B, the following operators are also affected:
450
451 += -= .+= .-= .*= ./= .\= .^= .**= &= |=
452
453 See the "Broadcasting" section in the new "Vectorization and Faster
454 Code Execution" chapter of the manual for more details.
455
456 ** Octave now features a profiler, thanks to the work of Daniel Kraft
457 under the Google Summer of Code mentorship program. The manual has
458 been updated to reflect this addition. The new user-visible
459 functions are profile, profshow, and profexplore.
460
461 ** Overhaul of statistical distribution functions
462
463 Functions now return "single" outputs for inputs of class "single".
464
465 75% reduction in memory usage through use of logical indexing.
466
467 Random sample functions now use the same syntax as rand and accept
468 a comma separated list of dimensions or a dimension vector.
469
470 Functions have been made Matlab-compatible with regard to special
471 cases (probability on boundaries, probabilities for values outside
472 distribution, etc.). This may cause subtle changes to existing
473 scripts.
474
475 negative binomial function has been extended to real, non-integer
476 inputs. The discrete_inv function now returns v(1) for 0 instead of
477 NaN. The nbincdf function has been recoded to use a closed form
478 solution with betainc.
479
480 ** strread, textscan, and textread have been completely revamped.
481
482 They now support nearly all Matlab functionality including:
483
484 * Matlab-compatible whitespace and delimiter defaults
485
486 * Matlab-compatible options: 'whitespace', treatasempty', format
487 string repeat count, user-specified comment style, uneven-length
488 output arrays, %n and %u conversion specifiers (provisionally)
489
490 ** All .m string functions have been modified for better performance or
491 greater Matlab compatibility. Performance gains of 15X-30X have
492 been demonstrated. Operations on cell array of strings no longer pay
493 quite as high a penalty as those on 2-D character arrays.
494
495 deblank: Now requires character or cellstr input.
496
497 strtrim: Now requires character or cellstr input.
498 No longer trims nulls ("\0") from string for Matlab
499 compatibility.
500
501 strmatch: Follows documentation precisely and ignores trailing spaces
502 in pattern and in string. Note that this is documented
503 Matlab behavior but the implementation apparently does
504 not always follow it.
505
506 substr: Now possible to specify a negative LEN option which
507 extracts to within LEN of the end of the string.
508
509 strtok: Now accepts cellstr input.
510
511 base2dec, bin2dec, hex2dec:
512 Now accept cellstr inputs.
513
514 dec2base, dec2bin, dec2hex:
515 Now accept cellstr inputs.
516
517 index, rindex:
518 Now accept 2-D character array input.
519
520 strsplit: Now accepts 2-D character array input.
521
522 ** Geometry functions derived from Qhull (convhull, delaunay, voronoi)
523 have been revamped. The options passed to the underlying qhull
524 command have been changed for better results or for Matlab
525 compatibility.
526
527 convhull: Default options are "Qt" for 2D, 3D, 4D inputs
528 Default options are "Qt Qx" for 5D and higher
529
530 delaunay: Default options are "Qt Qbb Qc Qz" for 2D and 3D inputs
531 Default options are "Qt Qbb Qc Qx" for 4D and higher
532
533 voronoi: No default arguments
534
535 ** Date/Time functions updated. Millisecond support with FFF format
536 string now supported.
537
538 datestr: Numerical formats 21, 22, 29 changed to match Matlab.
539 Now accepts cellstr input.
540
541 ** The following warning IDs have been removed:
542
543 Octave:associativity-change
544 Octave:complex-cmp-ops
545 Octave:empty-list-elements
546 Octave:fortran-indexing
547 Octave:precedence-change
548
549 ** The warning ID Octave:string-concat has been renamed to
550 Octave:mixed-string-concat.
551
552 ** Octave now includes the following Matlab-compatible preference
553 functions:
554
555 addpref getpref ispref rmpref setpref
556
557 ** The following Matlab-compatible handle graphics functions have been
558 added:
559
560 guidata uipanel uitoolbar
561 guihandles uipushtool uiwait
562 uicontextmenu uiresume waitfor
563 uicontrol uitoggletool
564
565 The uiXXX functions above are experimental.
566
567 Except for uiwait and uiresume, the uiXXX functions are not
568 supported with the FLTK+OpenGL graphics toolkit.
569
570 The gnuplot graphics toolkit does not support any of the uiXXX
571 functions nor the waitfor function.
572
573 ** New keyword parfor (parallel for loop) is now recognized as a valid
574 keyword. Implementation, however, is still mapped to an ordinary
575 for loop.
576
577 ** Other new functions added in 3.6.0:
578
579 bicg nthargout usejava
580 is_dq_string narginchk waitbar
581 is_sq_string python zscore
582 is_function_handle register_graphics_toolkit
583 loaded_graphics_toolkits recycle
584
585 ** Deprecated functions.
586
587 The following functions were deprecated in Octave 3.2 and have been
588 removed from Octave 3.6.
589
590 create_set spcholinv splu
591 dmult spcumprod spmax
592 iscommand spcumsum spmin
593 israwcommand spdet spprod
594 lchol spdiag spqr
595 loadimage spfind spsum
596 mark_as_command sphcat spsumsq
597 mark_as_rawcommand spinv spvcat
598 spatan2 spkron str2mat
599 spchol splchol unmark_command
600 spchol2inv split unmark_rawcommand
601
602 The following functions have been deprecated in Octave 3.6 and will
603 be removed from Octave 3.10 (or whatever version is the second major
604 release after 3.6):
605
606 cut is_duplicate_entry
607 cor polyderiv
608 corrcoef shell_cmd
609 __error_text__ studentize
610 error_text sylvester_matrix
611
612 ** The following functions have been modified for Matlab compatibility:
613
614 randperm
615
616 Summary of important user-visible changes for version 3.4.3:
617 -----------------------------------------------------------
618
619 ** Octave 3.4.3 is a bug fixing release.
620
621 Summary of important user-visible changes for version 3.4.2:
622 -----------------------------------------------------------
623
624 ** Octave 3.4.2 fixes some minor installation problems that affected
625 version 3.4.1.
626
627 Summary of important user-visible changes for version 3.4.1:
628 -----------------------------------------------------------
629
630 ** Octave 3.4.1 is primarily a bug fixing release.
631
632 ** IMPORTANT note about binary incompatibility in this release:
633
634 Binary compatibility for all 3.4.x releases was originally planned,
635 but this is impossible for the 3.4.1 release due to a bug in the way
636 shared libraries were built in Octave 3.4.0. Because of this bug,
637 .oct files built for Octave 3.4.0 must be recompiled before they
638 will work with Octave 3.4.1.
639
640 Given that there would be binary incompatibilities with shared
641 libraries going from Octave 3.4.0 to 3.4.1, the following
642 incompatible changes were also made in this release:
643
644 * The Perl Compatible Regular Expression (PCRE) library is now
645 required to build Octave.
646
647 * Octave's libraries and .oct files are now installed in
648 subdirectories of $libdir instead of $libexecdir.
649
650 Any future Octave 3.4.x release versions should remain binary
651 compatible with Octave 3.4.1 as proper library versioning is now
652 being used as recommended by the libtool manual.
653
654 ** The following functions have been deprecated in Octave 3.4.1 and will
655 be removed from Octave 3.8 (or whatever version is the second major
656 release after 3.4):
657
658 cquad is_duplicate_entry perror strerror
659
660 ** The following functions are new in 3.4.1:
661
662 colstyle gmres iscolumn isrow mgorth nproc rectangle
663
664 ** The get_forge_pkg function is now private.
665
666 ** The rectangle_lw, rectangle_sw, triangle_lw, and triangle_sw
667 functions are now private.
668
669 ** The logistic_regression_derivatives and logistic_regression_likelihood
670 functions are now private.
671
672 ** ChangeLog files in the Octave sources are no longer maintained
673 by hand. Instead, there is a single ChangeLog file generated from
674 the Mercurial version control commit messages. Older ChangeLog
675 information can be found in the etc/OLD-ChangeLogs directory in the
676 source distribution.
677
678 Summary of important user-visible changes for version 3.4:
679 ---------------------------------------------------------
680
681 ** BLAS and LAPACK libraries are now required to build Octave. The
682 subset of the reference BLAS and LAPACK libraries has been removed
683 from the Octave sources.
684
685 ** The ARPACK library is now distributed with Octave so it no longer
686 needs to be available as an external dependency when building
687 Octave.
688
689 ** The `lookup' function was extended to be more useful for
690 general-purpose binary searching. Using this improvement, the
691 ismember function was rewritten for significantly better
692 performance.
693
694 ** Real, integer and logical matrices, when used in indexing, will now
695 cache the internal index_vector value (zero-based indices) when
696 successfully used as indices, eliminating the conversion penalty for
697 subsequent indexing by the same matrix. In particular, this means it
698 is no longer needed to avoid repeated indexing by logical arrays
699 using find for performance reasons.
700
701 ** Logical matrices are now treated more efficiently when used as
702 indices. Octave will keep the index as a logical mask unless the
703 ratio of true elements is small enough, using a specialized
704 code. Previously, all logical matrices were always first converted
705 to index vectors. This results in savings in both memory and
706 computing time.
707
708 ** The `sub2ind' and `ind2sub' functions were reimplemented as compiled
709 functions for better performance. These functions are now faster,
710 can deliver more economized results for ranges, and can reuse the
711 index cache mechanism described in previous paragraph.
712
713 ** The built-in function equivalents to associative operators (`plus',
714 `times', `mtimes', `and', and `or') have been extended to accept
715 multiple arguments. This is especially useful for summing
716 (multiplying, etc.) lists of objects (of possibly distinct types):
717
718 matrix_sum = plus (matrix_list{:});
719
720 ** An FTP object type based on libcurl has been implemented. These
721 objects allow ftp connections, downloads and uploads to be
722 managed. For example,
723
724 fp = ftp ("ftp.octave.org);
725 cd (fp, "gnu/octave");
726 mget (fp, "octave-3.2.3.tar.bz2");
727 close (fp);
728
729 ** The default behavior of `assert (observed, expected)' has been
730 relaxed to employ less strict checking that does not require the
731 internals of the values to match. This avoids previously valid
732 tests from breaking due to new internal classes introduced in future
733 Octave versions.
734
735 For instance, all of these assertions were true in Octave 3.0.x
736 but false in 3.2.x due to new optimizations and improvements:
737
738 assert (2*linspace (1, 5, 5), 2*(1:5))
739 assert (zeros (0, 0), [])
740 assert (2*ones (1, 5), (2) (ones (1,5)))
741
742 ** The behavior of library functions `ismatrix', `issquare', and
743 `issymmetric' has been changed for better consistency.
744
745 * The `ismatrix' function now returns true for all numeric,
746 logical and character 2-D or N-D matrices. Previously, `ismatrix'
747 returned false if the first or second dimension was zero.
748 Hence, `ismatrix ([])' was false,
749 while `ismatrix (zeros (1,2,0))' was true.
750
751 * The `issquare' function now returns a logical scalar, and is
752 equivalent to the expression
753
754 ismatrix (x) && ndims (x) == 2 && rows (x) == columns (x)
755
756 The dimension is no longer returned. As a result, `issquare ([])'
757 now yields true.
758
759 * The `issymmetric' function now checks for symmetry instead of
760 Hermitianness. For the latter, ishermitian was created. Also,
761 logical scalar is returned rather than the dimension, so
762 `issymmetric ([])' is now true.
763
764 ** Function handles are now aware of overloaded functions. If a
765 function is overloaded, the handle determines at the time of its
766 reference which function to call. A non-overloaded version does not
767 need to exist.
768
769 ** Overloading functions for built-in classes (double, int8, cell,
770 etc.) is now compatible with Matlab.
771
772 ** Function handles can now be compared with the == and != operators,
773 as well as the `isequal' function.
774
775 ** Performance of concatenation (using []) and the functions `cat',
776 `horzcat', and `vertcat' has been improved for multidimensional
777 arrays.
778
779 ** The operation-assignment operators +=, -=, *= and /= now behave more
780 efficiently in certain cases. For instance, if M is a matrix and S a
781 scalar, then the statement
782
783 M += S;
784
785 will operate on M's data in-place if it is not shared by another
786 variable, usually increasing both time and memory efficiency.
787
788 Only selected common combinations are affected, namely:
789
790 matrix += matrix
791 matrix -= matrix
792 matrix .*= matrix
793 matrix ./= matrix
794
795 matrix += scalar
796 matrix -= scalar
797 matrix *= scalar
798 matrix /= scalar
799
800 logical matrix |= logical matrix
801 logical matrix &= logical matrix
802
803 where matrix and scalar belong to the same class. The left-hand
804 side must be a simple variable reference.
805
806 Moreover, when unary operators occur in expressions, Octave will
807 also try to do the operation in-place if it's argument is a
808 temporary expression.
809
810 ** The effect of comparison operators (<, >, <=, and >=) applied to
811 complex numbers has changed to be consistent with the strict
812 ordering defined by the `max', `min', and `sort' functions. More
813 specifically, complex numbers are compared by lexicographical
814 comparison of the pairs `[abs(z), arg(z)]'. Previously, only real
815 parts were compared; this can be trivially achieved by converting
816 the operands to real values with the `real' function.
817
818 ** The automatic simplification of complex computation results has
819 changed. Octave will now simplify any complex number with a zero
820 imaginary part or any complex matrix with all elements having zero
821 imaginary part to a real value. Previously, this was done only for
822 positive zeros. Note that the behavior of the complex function is
823 unchanged and it still produces a complex value even if the
824 imaginary part is zero.
825
826 ** As a side effect of code refactoring in liboctave, the binary
827 logical operations are now more easily amenable to compiler
828 optimizations and are thus significantly faster.
829
830 ** Octave now allows user-defined `subsasgn' methods to optimize out
831 redundant copies. For more information, see the manual.
832
833 ** More efficient matrix division handling. Octave is now able to
834 handle the expressions
835
836 M' \ V
837 M.' \ V
838 V / M
839
840 (M is a matrix and V is a vector) more efficiently in certain cases.
841 In particular, if M is triangular, all three expressions will be
842 handled by a single call to xTRTRS (from LAPACK), with appropriate
843 flags. Previously, all three expressions required a physical
844 transpose of M.
845
846 ** More efficient handling of certain mixed real-complex matrix
847 operations. For instance, if RM is a real matrix and CM a complex
848 matrix,
849
850 RM * CM
851
852 can now be evaluated either as
853
854 complex (RM * real (CM), RM * imag (CM))
855
856 or as
857
858 complex (RM) * CM,
859
860 depending on the dimensions. The first form requires more
861 temporaries and copying, but halves the FLOP count, which normally
862 brings better performance if RM has enough rows. Previously, the
863 second form was always used.
864
865 Matrix division is similarly affected.
866
867 ** More efficient handling of triangular matrix factors returned from
868 factorizations. The functions for computing QR, LU and Cholesky
869 factorizations will now automatically return the triangular matrix
870 factors with proper internal matrix_type set, so that it won't need
871 to be computed when the matrix is used for division.
872
873 ** The built-in `sum' function now handles the non-native summation
874 (i.e., double precision sum of single or integer inputs) more
875 efficiently, avoiding a temporary conversion of the whole input
876 array to doubles. Further, `sum' can now accept an extra option
877 argument, using a compensated summation algorithm rather than a
878 straightforward sum, which significantly improves precision if lots
879 of cancellation occurs in the summation.
880
881 ** The built-in `bsxfun' function now uses optimized code for certain
882 cases where built-in operator handles are passed in. Namely, the
883 optimizations concern the operators `plus', `minus', `times',
884 `ldivide', `rdivide', `power', `and', `or' (for logical arrays),
885 the relational operators `eq', `ne', `lt', `le', `gt', `ge', and the
886 functions `min' and `max'. Optimizations only apply when both
887 operands are of the same built-in class. Mixed real/complex and
888 single/double operations will first convert both operands to a
889 common type.
890
891 ** The `strfind' and `strrep' functions now have compiled
892 implementations, facilitating significantly more efficient searching
893 and replacing in strings, especially with longer patterns. The code
894 of `strcat' has been vectorized and is now much more efficient when
895 many strings are concatenated. The `strcmpi' and `strncmpi'
896 functions are now built-in functions, providing better performance.
897
898 ** 'str2double' now has a compiled implementation and the API conforms
899 to Matlab. The additional Octave-specific features of returning a
900 boolean matrix indicating which elements were successfully converted
901 has been removed.
902
903 ** Matlab-style ignoring input and output function arguments using
904 tilde (~) is now supported. Ignored output arguments may be
905 detected from a function using the built-in function `isargout'.
906 For more details, consult the manual.
907
908 ** The list datatype, deprecated since the introduction of cells, has
909 been removed.
910
911 ** The accumarray function has been optimized and is now significantly
912 faster in certain important cases.
913
914 ** The behavior of isreal and isnumeric functions was changed to be more
915 Matlab-compatible.
916
917 ** The integer math & conversion warnings (Octave:int-convert-nan,
918 Octave:int-convert-non-int-val, Octave:int-convert-overflow,
919 Octave:int-math-overflow) have been removed.
920
921 ** rem and mod are now built-in functions. They also handle integer
922 types efficiently using integer arithmetic.
923
924 ** Sparse indexing and indexed assignment has been mostly rewritten.
925 Since Octave uses compressed column storage for sparse matrices,
926 major attention is devoted to operations manipulating whole columns.
927 Such operations are now significantly faster, as well as some other
928 important cases.
929
930 Further, it is now possible to pre-allocate a sparse matrix and
931 subsequently fill it by assignments, provided they meet certain
932 conditions. For more information, consult the `spalloc' function,
933 which is no longer a mere dummy. Consequently, nzmax and nnz are no
934 longer always equal in Octave. Octave may also produce a matrix
935 with nnz < nzmax as a result of other operations, so you should
936 consistently use nnz unless you really want to use nzmax (i.e., the
937 space allocated for nonzero elements).
938
939 Sparse concatenation is also affected, and concatenating sparse
940 matrices, especially larger collections, is now significantly more
941 efficient. This applies to both the [] operator and the
942 cat/vertcat/horzcat functions.
943
944 ** It is now possible to optionally employ the xGESDD LAPACK drivers
945 for computing the singular value decomposition using svd, instead
946 of the default xGESVD, using the configuration pseudo-variable
947 svd_driver. The xGESDD driver can be up to 6x times faster when
948 singular vectors are requested, but is reported to be somewhat less
949 robust on highly ill-conditioned matrices.
950
951 ** Configuration pseudo-variables, such as page_screen_output or
952 confirm_recursive_rmdir (or the above mentioned svd_driver), now
953 accept a "local" option as second argument, requesting the change
954 to be undone when the current function returns:
955
956 function [status, msg] = rm_rf (dir)
957 confirm_recursive_rmdir (false, "local");
958 [status, msg] = rmdir (dir, "s");
959 ...
960 endfunction
961
962 Upon return, confirm_recursive_rmdir will be restored to the value
963 it had on entry to the function, even if there were subsequent
964 changes to the variable in function rm_rf or any of the functions
965 it calls.
966
967 ** pkg now accepts a -forge option for downloading and installing
968 packages from Octave Forge automatically. For example,
969
970 pkg install -forge general
971
972 will automatically download the latest release of the general
973 package and attempt to install it. No automatic resolving of
974 dependencies is provided. Further,
975
976 pkg list -forge
977
978 can be used to list all available packages.
979
980 ** The internal data representation of structs has been completely
981 rewritten to make certain optimizations feasible. The field data
982 can now be shared between structs with equal keys but different
983 dimensions or values, making operations that preserve the fields
984 faster. Economized storage is now used for scalar structs (just
985 like most other scalars), making their usage more
986 memory-efficient. Certain array-like operations on structs
987 (concatenation, uniform cellfun, num2cell) have gained a
988 significant speed-up. Additionally, the octave_scalar_map class
989 now provides a simpler interface to work with scalar structs within
990 a C++ DLD function.
991
992 ** Two new formats are available for displaying numbers:
993
994 format short eng
995 format long eng
996
997 Both display numbers in engineering notation, i.e., mantissa +
998 exponent where the exponent is a multiple of 3.
999
1000 ** The following functions are new in Octave 3.4:
1001 accumdim erfcx nfields pqpnonneg uigetdir
1002 bitpack fileread nth_element quadcc uigetfile
1003 bitunpack fminbnd onCleanup randi uiputfile
1004 blkmm fskipl pbaspect repelems uimenu
1005 cbrt ifelse pie3 reset whitebg
1006 curl ishermitian powerset rsf2csf
1007 chop isindex ppder saveas
1008 daspect luupdate ppint strread
1009 divergence merge ppjumps textread
1010
1011 ** Using the image function to view images with external programs such
1012 as display, xv, and xloadimage is no longer supported. The
1013 image_viewer function has also been removed.
1014
1015 ** The behavior of struct assignments to non-struct values has been
1016 changed. Previously, it was possible to overwrite an arbitrary
1017 value:
1018
1019 a = 1;
1020 a.x = 2;
1021
1022 This is no longer possible unless a is an empty matrix or cell
1023 array.
1024
1025 ** The dlmread function has been extended to allow specifying a custom
1026 value for empty fields.
1027
1028 ** The dlmread and dlmwrite functions have been modified to accept
1029 file IDs (as returned by fopen) in addition to file names.
1030
1031 ** Octave can now optimize away the interpreter overhead of an
1032 anonymous function handle, if the function simply calls another
1033 function or handle with some of its parameters bound to certain
1034 values. Example:
1035
1036 f = @(x) sum (x, 1);
1037
1038 When f is called, the call is forwarded to @sum with the constant 1
1039 appended, and the anonymous function call does not occur on the
1040 call stack.
1041
1042 ** For compatibility with Matlab, mu2lin (x) is now equivalent to
1043 mu2lin (x, 0).
1044
1045 ** The new function `history_control' may be used to control the way
1046 command lines are added to the history list when Octave is using
1047 readline for command-line editing. For example
1048
1049 history_control ("ignoredups")
1050
1051 tells Octave to avoid adding duplicate lines to the history list.
1052
1053 ** Octave now uses the gnulib library for improved portability and to
1054 avoid bugs in operating system functions.
1055
1056 ** Deprecated functions.
1057
1058 The following functions were deprecated in Octave 3.0 and have been
1059 removed from Octave 3.4.
1060
1061 beta_cdf geometric_pdf pascal_pdf
1062 beta_inv geometric_rnd pascal_rnd
1063 beta_pdf hypergeometric_cdf poisson_cdf
1064 beta_rnd hypergeometric_inv poisson_inv
1065 binomial_cdf hypergeometric_pdf poisson_pdf
1066 binomial_inv hypergeometric_rnd poisson_rnd
1067 binomial_pdf intersection polyinteg
1068 binomial_rnd is_bool setstr
1069 chisquare_cdf is_complex struct_contains
1070 chisquare_inv is_list struct_elements
1071 chisquare_pdf is_matrix t_cdf
1072 chisquare_rnd is_scalar t_inv
1073 clearplot is_square t_pdf
1074 clg is_stream t_rnd
1075 com2str is_struct uniform_cdf
1076 exponential_cdf is_symmetric uniform_inv
1077 exponential_inv is_vector uniform_pdf
1078 exponential_pdf isstr uniform_rnd
1079 exponential_rnd lognormal_cdf weibcdf
1080 f_cdf lognormal_inv weibinv
1081 f_inv lognormal_pdf weibpdf
1082 f_pdf lognormal_rnd weibrnd
1083 f_rnd meshdom weibull_cdf
1084 gamma_cdf normal_cdf weibull_inv
1085 gamma_inv normal_inv weibull_pdf
1086 gamma_pdf normal_pdf weibull_rnd
1087 gamma_rnd normal_rnd wiener_rnd
1088 geometric_cdf pascal_cdf
1089 geometric_inv pascal_inv
1090
1091 The following functions were deprecated in Octave 3.2 and will
1092 be removed from Octave 3.6 (or whatever version is the second major
1093 release after 3.2):
1094
1095 create_set spcholinv splu
1096 dmult spcumprod spmax
1097 iscommand spcumsum spmin
1098 israwcommand spdet spprod
1099 lchol spdiag spqr
1100 loadimage spfind spsum
1101 mark_as_command sphcat spsumsq
1102 mark_as_rawcommand spinv spvcat
1103 spatan2 spkron str2mat
1104 spchol splchol unmark_command
1105 spchol2inv split unmark_rawcommand
1106
1107 The following functions have been deprecated in Octave 3.4 and will
1108 be removed from Octave 3.8 (or whatever version is the second major
1109 release after 3.4):
1110
1111 autocor cellidx gammai is_global replot values
1112 autocov dispatch glpkmex krylovb saveimage
1113 betai fstat intwarning perror strerror
1114
1115 Summary of important user-visible changes for version 3.2:
1116 ---------------------------------------------------------
1117
1118 ** Compatibility with Matlab graphics has been improved.
1119
1120 The hggroup object and associated listener callback functions have
1121 been added allowing the inclusion of group objects. Data sources
1122 have been added to these group objects such that
1123
1124 x = 0:0.1:10;
1125 y = sin (x);
1126 plot (x, y, "ydatasource", "y");
1127 for i = 1 : 100
1128 pause(0.1)
1129 y = sin (x + 0.1 * i);
1130 refreshdata ();
1131 endfor
1132
1133 works as expected. This capability has be used to introduce
1134 stem-series, bar-series, etc., objects for better Matlab
1135 compatibility.
1136
1137 ** New graphics functions:
1138
1139 addlistener ezcontour gcbo refresh
1140 addproperty ezcontourf ginput refreshdata
1141 allchild ezmesh gtext specular
1142 available_graphics_toolkits ezmeshc intwarning surfl
1143 graphics_toolkit ezplot ishghandle trisurf
1144 cla ezplot3 isocolors waitforbuttonpress
1145 clabel ezpolar isonormals
1146 comet ezsurf isosurface
1147 dellistener findall linkprop
1148 diffuse gcbf plotmatrix
1149
1150 ** New experimental OpenGL/FLTK based plotting system.
1151
1152 An experimental plotting system based on OpenGL and the FLTK
1153 toolkit is now part of Octave. This graphics toolkit is disabled by
1154 default. You can switch to using it with the command
1155
1156 graphics_toolkit ("fltk")
1157
1158 for all future figures or for a particular figure with the command
1159
1160 graphics_toolkit (h, "fltk")
1161
1162 where "h" is a valid figure handle.
1163
1164 ** Functions providing direct access to gnuplot have been removed.
1165
1166 The functions __gnuplot_plot__, __gnuplot_set__, __gnuplot_raw__,
1167 __gnuplot_show__, __gnuplot_replot__, __gnuplot_splot__,
1168 __gnuplot_save_data__ and __gnuplot_send_inline_data__ have been
1169 removed from Octave. These function were incompatible with the
1170 high level graphics handle code.
1171
1172 ** The Control, Finance and Quaternion functions have been removed.
1173
1174 These functions are now available as separate packages from
1175
1176 http://octave.sourceforge.net/packages.html
1177
1178 and can be reinstalled using the Octave package manager (see
1179 the pkg function).
1180
1181 ** Specific sparse matrix functions removed.
1182
1183 The following functions, which handled only sparse matrices have
1184 been removed. Instead of calling these functions directly, you
1185 should use the corresponding function without the "sp" prefix.
1186
1187 spatan2 spcumsum spkron spprod
1188 spchol spdet splchol spqr
1189 spchol2inv spdiag splu spsum
1190 spcholinv spfind spmax spsumsqk
1191 spcumprod spinv spmin
1192
1193 ** Improvements to the debugger.
1194
1195 The interactive debugging features have been improved. Stopping
1196 on statements with dbstop should work correctly now. Stepping
1197 into and over functions, and stepping one statement at a time
1198 (with dbstep) now works. Moving up and down the call stack with
1199 dbup and dbdown now works. The dbstack function is now available
1200 to print the current function call stack. The new dbquit function
1201 is available to exit the debugging mode.
1202
1203 ** Improved traceback error messages.
1204
1205 Traceback error messages are much more concise and easier to
1206 understand. They now display information about the function call
1207 stack instead of the stack of all statements that were active at
1208 the point of the error.
1209
1210 ** Object Oriented Programming.
1211
1212 Octave now includes OOP features and the user can create their own
1213 class objects and overloaded functions and operators. For
1214 example, all methods of a class called "myclass" will be found in
1215 a directory "@myclass" on the users path. The class specific
1216 versions of functions and operators take precedence over the
1217 generic versions of these functions.
1218
1219 New functions related to OOP include
1220
1221 class inferiorto isobject loadobj methods superiorto
1222
1223 See the Octave manual for more details.
1224
1225 ** Parsing of Command-style Functions.
1226
1227 Octave now parses command-style functions without needing to first
1228 declare them with "mark_as_command". The rules for recognizing a
1229 command-style function calls are
1230
1231 * A command must appear as the first word in a statement,
1232 followed by a space.
1233
1234 * The first character after the space must not be '=' or '('
1235
1236 * The next token after the space must not look like a binary
1237 operator.
1238
1239 These rules should be mostly compatible with the way Matlab parses
1240 command-style function calls and allow users to define commands in
1241 .m files without having to mark them as commands.
1242
1243 Note that previous versions of Octave allowed expressions like
1244
1245 x = load -text foo.dat
1246
1247 but an expression like this will now generate a parse error. In
1248 order to assign the value returned by a function to a variable,
1249 you must use the normal function call syntax:
1250
1251 x = load ("-text", "foo.dat");
1252
1253 ** Block comments.
1254
1255 Commented code can be between matching "#{" and "#}" or "%{" and
1256 "%}" markers, even if the commented code spans several line. This
1257 allows blocks code to be commented, without needing to comment
1258 each line. For example,
1259
1260 function [s, t] = func (x, y)
1261 s = 2 * x;
1262 #{
1263 s *= y;
1264 t = y + x;
1265 #}
1266 endfunction
1267
1268 the lines "s *= y;" and "t = y + x" will not be executed.
1269
1270 ** If any subfunction in a file ends with "end" or "endfunction", then
1271 they all must end that way. Previously, Octave accepted
1272
1273 function main ()
1274 ...
1275 # no endfunction here.
1276 function sub ()
1277 ...
1278 endfunction
1279
1280 but this is no longer allowed.
1281
1282 ** Special treatment in the parser of expressions like "a' * b".
1283
1284 In these cases the transpose is no longer explicitly formed and
1285 BLAS libraries are called with the transpose flagged,
1286 significantly improving performance for these kinds of
1287 operations.
1288
1289 ** Single Precision data type.
1290
1291 Octave now includes a single precision data type. Single
1292 precision variables can be created with the "single" command, or
1293 from functions like ones, eye, etc. For example,
1294
1295 single (1)
1296 ones (2, 2, "single")
1297 zeros (2, 2, "single")
1298 eye (2, 2, "single")
1299 Inf (2, 2, "single")
1300 NaN (2, 2, "single")
1301 NA (2, 2, "single")
1302
1303 all create single precision variables. For compatibility with
1304 Matlab, mixed double/single precision operators and functions
1305 return single precision types.
1306
1307 As a consequence of this addition to Octave the internal
1308 representation of the double precision NA value has changed, and
1309 so users that make use of data generated by Octave with R or
1310 visa-versa are warned that compatibility might not be assured.
1311
1312 ** Improved array indexing.
1313
1314 The underlying code used for indexing of arrays has been
1315 completely rewritten and indexing is now significantly faster.
1316
1317 ** Improved memory management.
1318
1319 Octave will now attempt to share data in some cases where previously
1320 a copy would be made, such as certain array slicing operations or
1321 conversions between cells, structs and cs-lists. This usually reduces
1322 both time and memory consumption.
1323 Also, Octave will now attempt to detect and optimize usage of a vector
1324 as a stack, when elements are being repeatedly inserted at/removed from
1325 the end of the vector.
1326
1327 ** Improved performance for reduction operations.
1328
1329 The performance of the sum, prod, sumsq, cumsum, cumprod, any, all,
1330 max and min functions has been significantly improved.
1331
1332 ** Sorting and searching.
1333
1334 The performance of sort has been improved, especially when sorting
1335 indices are requested. An efficient built-in issorted
1336 implementation was added. The sortrows function now uses a more
1337 efficient algorithm, especially in the homogeneous case. The lookup
1338 function is now a built-in function performing a binary search,
1339 optimized for long runs of close elements. Lookup also works with
1340 cell arrays of strings.
1341
1342 ** Range arithmetics
1343
1344 For some operations on ranges, Octave will attempt to keep the
1345 result as a range. These include negation, adding a scalar,
1346 subtracting a scalar, and multiplying by a scalar. Ranges with zero
1347 increment are allowed and can be constructed using the built-in
1348 function `ones'.
1349
1350 ** Various performance improvements.
1351
1352 Performance of a number of other built-in operations and functions
1353 was improved, including:
1354
1355 * logical operations
1356 * comparison operators
1357 * element-wise power
1358 * accumarray
1359 * cellfun
1360 * isnan
1361 * isinf
1362 * isfinite
1363 * nchoosek
1364 * repmat
1365 * strcmp
1366
1367 ** 64-bit integer arithmetic.
1368
1369 Arithmetic with 64-bit integers (int64 and uint64 types) is fully
1370 supported, with saturation semantics like the other integer types.
1371 Performance of most integer arithmetic operations has been
1372 improved by using integer arithmetic directly. Previously, Octave
1373 performed integer math with saturation semantics by converting the
1374 operands to double precision, performing the operation, and then
1375 converting the result back to an integer value, truncating if
1376 necessary.
1377
1378 ** Diagonal and permutation matrices.
1379
1380 The interpreter can now treat diagonal and permutation matrices as
1381 special objects that store only the non-zero elements, rather than
1382 general full matrices. Therefore, it is now possible to construct
1383 and use these matrices in linear algebra without suffering a
1384 performance penalty due to storing large numbers of zero elements.
1385
1386 ** Improvements to fsolve.
1387
1388 The fsolve function now accepts an option structure argument (see
1389 also the optimset function). The INFO values returned from fsolve
1390 have changed to be compatible with Matlab's fsolve function.
1391 Additionally, fsolve is now able to solve overdetermined systems,
1392 complex-differentiable complex systems, systems with a sparse
1393 jacobian and can work in single precision if given single precision
1394 inputs. It can also be called recursively.
1395
1396 ** Improvements to the norm function.
1397
1398 The norm function is now able to compute row or column norms of a
1399 matrix in a single call, as well as general matrix p-norms.
1400
1401 ** New functions for computing some eigenvalues or singular values.
1402
1403 The eigs and svds functions have been included in Octave. These
1404 functions require the ARPACK library (now distributed under a
1405 GPL-compatible license).
1406
1407 ** New QR and Cholesky factorization updating functions.
1408
1409 choldelete cholshift qrdelete qrshift
1410 cholinsert cholupdate qrinsert qrupdate
1411
1412 ** New quadrature functions.
1413
1414 dblquad quadgk quadv triplequad
1415
1416 ** New functions for reading and writing images.
1417
1418 The imwrite and imread functions have been included in Octave.
1419 These functions require the GraphicsMagick library. The new
1420 function imfinfo provides information about an image file (size,
1421 type, colors, etc.)
1422
1423 ** The input_event_hook function has been replaced by the pair of
1424 functions add_input_event_hook and remove_input_event_hook so that
1425 more than one hook function may be installed at a time.
1426
1427 ** Other miscellaneous new functions.
1428
1429 addtodate hypot reallog
1430 bicgstab idivide realpow
1431 cellslices info realsqrt
1432 cgs interp1q rectint
1433 command_line_path isdebugmode regexptranslate
1434 contrast isfloat restoredefaultpath
1435 convn isstrprop roundb
1436 cummin log1p rundemos
1437 cummax lsqnonneg runlength
1438 datetick matlabroot saveobj
1439 display namelengthmax spaugment
1440 expm1 nargoutchk strchr
1441 filemarker pathdef strvcat
1442 fstat perl subspace
1443 full prctile symvar
1444 fzero quantile treelayout
1445 genvarname re_read_readline_init_file validatestring
1446 histc
1447
1448 ** Changes to strcat.
1449
1450 The strcat function is now compatible with Matlab's strcat
1451 function, which removes trailing whitespace when concatenating
1452 character strings. For example
1453
1454 strcat ('foo ', 'bar')
1455 ==> 'foobar'
1456
1457 The new function cstrcat provides the previous behavior of
1458 Octave's strcat.
1459
1460 ** Improvements to the help functions.
1461
1462 The help system has been mostly re-implemented in .m files to make
1463 it easier to modify. Performance of the lookfor function has been
1464 greatly improved by caching the help text from all functions that
1465 are distributed with Octave. The pkg function has been modified
1466 to generate cache files for external packages when they are
1467 installed.
1468
1469 ** Deprecated functions.
1470
1471 The following functions were deprecated in Octave 3.0 and will be
1472 removed from Octave 3.4 (or whatever version is the second major
1473 release after 3.0):
1474
1475 beta_cdf geometric_pdf pascal_pdf
1476 beta_inv geometric_rnd pascal_rnd
1477 beta_pdf hypergeometric_cdf poisson_cdf
1478 beta_rnd hypergeometric_inv poisson_inv
1479 binomial_cdf hypergeometric_pdf poisson_pdf
1480 binomial_inv hypergeometric_rnd poisson_rnd
1481 binomial_pdf intersection polyinteg
1482 binomial_rnd is_bool setstr
1483 chisquare_cdf is_complex struct_contains
1484 chisquare_inv is_list struct_elements
1485 chisquare_pdf is_matrix t_cdf
1486 chisquare_rnd is_scalar t_inv
1487 clearplot is_square t_pdf
1488 clg is_stream t_rnd
1489 com2str is_struct uniform_cdf
1490 exponential_cdf is_symmetric uniform_inv
1491 exponential_inv is_vector uniform_pdf
1492 exponential_pdf isstr uniform_rnd
1493 exponential_rnd lognormal_cdf weibcdf
1494 f_cdf lognormal_inv weibinv
1495 f_inv lognormal_pdf weibpdf
1496 f_pdf lognormal_rnd weibrnd
1497 f_rnd meshdom weibull_cdf
1498 gamma_cdf normal_cdf weibull_inv
1499 gamma_inv normal_inv weibull_pdf
1500 gamma_pdf normal_pdf weibull_rnd
1501 gamma_rnd normal_rnd wiener_rnd
1502 geometric_cdf pascal_cdf
1503 geometric_inv pascal_inv
1504
1505 The following functions are now deprecated in Octave 3.2 and will
1506 be removed from Octave 3.6 (or whatever version is the second major
1507 release after 3.2):
1508
1509 create_set spcholinv spmax
1510 dmult spcumprod spmin
1511 iscommand spcumsum spprod
1512 israwcommand spdet spqr
1513 lchol spdiag spsum
1514 loadimage spfind spsumsq
1515 mark_as_command spinv str2mat
1516 mark_as_rawcommand spkron unmark_command
1517 spatan2 splchol unmark_rawcommand
1518 spchol split
1519 spchol2inv splu
1520
1 Summary of important user-visible changes for version 3.0: 1521 Summary of important user-visible changes for version 3.0:
2 --------------------------------------------------------- 1522 ---------------------------------------------------------
3 1523
4 ** Compatibility with Matlab graphics is much better now. We now 1524 ** Compatibility with Matlab graphics is much better now. We now
5 have some graphics features that work like Matlab's Handle 1525 have some graphics features that work like Matlab's Handle
194 ** For compatibility with Matlab, gamcdf, gaminv, gampdf, gamrnd, 1714 ** For compatibility with Matlab, gamcdf, gaminv, gampdf, gamrnd,
195 expcdf, expinv, exppdf and exprnd have been modified to compute 1715 expcdf, expinv, exppdf and exprnd have been modified to compute
196 the distributions using the standard scale factor rather than 1716 the distributions using the standard scale factor rather than
197 one over the scale factor. 1717 one over the scale factor.
198 1718
1719 ---------------------------------------------------------
199 1720
200 See NEWS.2 for old news. 1721 See NEWS.2 for old news.