1Summary of important user-visible changes for version 3.8 (2013-12-27):
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
400Summary of important user-visible changes for version 3.6 (2012-01-15):
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                polyderiv
607      cor                shell_cmd
608      corrcoef           studentize
609      __error_text__     sylvester_matrix
610      error_text
611
612 ** The following functions have been modified for Matlab compatibility:
613
614      randperm
615
616Summary of important user-visible changes for version 3.4.3 (2011-10-10):
617------------------------------------------------------------------------
618
619 ** Octave 3.4.3 is a bug fixing release.
620
621Summary of important user-visible changes for version 3.4.2 (2011-06-24):
622------------------------------------------------------------------------
623
624 ** Octave 3.4.2 fixes some minor installation problems that affected
625    version 3.4.1.
626
627Summary of important user-visible changes for version 3.4.1 (2011-06-15):
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
678Summary of important user-visible changes for version 3.4 (2011-02-08):
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
1115Summary of important user-visible changes for version 3.2 (2009-06-05):
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
1521Summary of important user-visible changes for version 3.0 (2007-12-21):
1522----------------------------------------------------------------------
1523
1524 ** Compatibility with Matlab graphics is much better now.  We now
1525    have some graphics features that work like Matlab's Handle
1526    Graphics (tm):
1527
1528    + You can make a subplot and then use the print function to
1529      generate a file with the plot.
1530
1531    + RGB line colors are supported if you use gnuplot 4.2.  Octave
1532      can still use gnuplot 4.0, but there is no way to set arbitrary
1533      line colors with it when using the Matlab-style plot functions.
1534      There never was any way to do this reliably with older versions
1535      of gnuplot (whether run from Octave or not) since it only
1536      provided a limited set to choose from, and they were terminal
1537      dependent, so choosing color 1 with the X11 terminal would be
1538      different from color 1 with the PostScript terminal.  Valid RGB
1539      colors for gnuplot 4.0 are the eight possible combinations of 0
1540      and 1 for the R, G and B values. Invalid values are all mapped
1541      to the same color.
1542
1543      This also affects patch objects used in the bar, contour, meshc
1544      and surfc functions, where the bars and contours will be
1545      monochrome. A workaround for this is to type "colormap gmap40"
1546      that loads a colormap that in many cases will be adequate for
1547      simple bar and contour plots.
1548
1549    + You can control the width of lines using (for example):
1550
1551        line (x, y, "linewidth", 4, "color", [1, 0, 0.5]);
1552
1553      (this also shows the color feature).
1554
1555    + With gnuplot 4.2, image data is plotted with gnuplot and may be
1556      combined with other 2-d plot data.
1557
1558    + Lines for contour plots are generated with an Octave function, so
1559      contour plots are now 2-d plots instead of special 3-d plots, and
1560      this allows you to plot additional 2-d data on top of a contour
1561      plot.
1562
1563    + With the gnuplot "extended" terminals the TeX interpreter is
1564    emulated. However, this means that the TeX interpreter is only
1565    supported on the postscript terminals with gnuplot 4.0. Under
1566    gnuplot 4.2 the terminals aqua, dumb, png, jpeg, gif, pm, windows,
1567    wxt, svg and x11 are supported as well.
1568
1569    + The following plot commands are now considered obsolete and will
1570      be removed from a future version of Octave:
1571
1572        __gnuplot_set__
1573        __gnuplot_show__
1574        __gnuplot_plot__
1575        __gnuplot_splot__
1576        __gnuplot_replot__
1577
1578      Additionally, these functions no longer have any effect on plots
1579      created with the Matlab-style plot commands (plot, line, mesh,
1580      semilogx, etc.).
1581
1582    + Plot property values are not extensively checked.  Specifying
1583      invalid property values may produce unpredictable results.
1584
1585    + Octave now sends data over the same pipe that is used to send
1586      commands to gnuplot.  While this avoids the problem of
1587      cluttering /tmp with data files, it is no longer possible to use
1588      the mouse to zoom in on plots.  This is a limitation of gnuplot,
1589      which is unable to zoom when the data it plots is not stored in
1590      a file.  Some work has been done to fix this problem in newer
1591      versions of gnuplot (> 4.2.2).  See for example, this thread
1592
1593        http://www.nabble.com/zooming-of-inline-data-tf4357017.html#a12416496
1594
1595      on the gnuplot development list.
1596
1597
1598 ** The way Octave handles search paths has changed.  Instead of
1599    setting the built-in variable LOADPATH, you must use addpath,
1600    rmpath, or path to manipulate the function search path.  These
1601    functions will maintain "." at the head of the path, for
1602    compatibility with Matlab.
1603
1604    Leading, trailing or doubled colons are no longer special.
1605    Now, all elements of the search path are explicitly included in
1606    the path when Octave starts.  To display the path, use the path
1607    function.
1608
1609    Path elements that end in // are no longer searched recursively.
1610    Instead, you may use addpath and the genpath function to add an
1611    entire directory tree to the path.  For example,
1612
1613      addpath (genpath ("~/octave"));
1614
1615    will add ~/octave and all directories below it to the head of the
1616    path.
1617
1618
1619 ** Previous versions of Octave had a number of built-in variables to
1620    control warnings (for example, warn_divide_by_zero).  These
1621    variables have been replaced by warning identifiers that are used
1622    with the warning function to control the state of warnings.
1623
1624    For example, instead of writing
1625
1626      warn_divide_by_zero = false;
1627
1628    to disable divide-by-zero warnings, you should write
1629
1630      warning ("off", "Octave:divide-by-zero");
1631
1632    You may use the same technique in your own code to control
1633    warnings.  For example, you can use
1634
1635      warning ("My-package:phase-of-the-moon",
1636               "the phase of the moon could cause trouble today");
1637
1638    to allow users to control this warning using the
1639    "My-package:phase-of-the-moon" warning identifier.
1640
1641    You may also enable or disable all warnings, or turn them into
1642    errors:
1643
1644      warning ("on", "all");
1645      warning ("off", "all");
1646      warning ("error", "Octave:divide-by-zero");
1647      warning ("error", "all");
1648
1649    You can query the state of current warnings using
1650
1651      warning ("query", ID)
1652      warning ("query")
1653
1654    (only those warning IDs which have been explicitly set are
1655    returned).
1656
1657    A partial list and description of warning identifiers is available
1658    using
1659
1660      help warning_ids
1661
1662
1663 ** All built-in variables have been converted to functions.  This
1664    change simplifies the interpreter and allows a consistent
1665    interface to internal variables for user-defined packages and the
1666    core functions distributed with Octave.  In most cases, code that
1667    simply accesses internal variables does not need to change.  Code
1668    that sets internal variables will change.  For example, instead of
1669    writing
1670
1671      PS1 = ">> ";
1672
1673    you will need to write
1674
1675      PS1 (">> ");
1676
1677    If you need write code that will run in both old and new versions
1678    of Octave, you can use something like
1679
1680      if (exist ("OCTAVE_VERSION") == 5)
1681        ## New:
1682        PS1 (">> ");
1683      else
1684        ## Old:
1685        PS1 = ">> ";
1686      endif
1687
1688
1689 ** For compatibility with Matlab, the output order of Octave's
1690    "system" function has changed from
1691
1692      [output, status] = system (cmd);
1693
1694    to
1695
1696      [status, output] = system (cmd);
1697
1698
1699 ** For compatibility with Matlab, the output of Octave's fsolve
1700    function has been changed from
1701
1702      [x, info, msg] = fsolve (...);
1703
1704    to
1705
1706      [x, fval, info] = fsolve (...);
1707
1708
1709 ** For compatibility with Matlab, normcdf, norminv, normpdf, and
1710    normrnd have been modified to compute distributions using the
1711    standard deviation instead of the variance.
1712
1713
1714 ** For compatibility with Matlab, gamcdf, gaminv, gampdf, gamrnd,
1715    expcdf, expinv, exppdf and exprnd have been modified to compute
1716    the distributions using the standard scale factor rather than
1717    one over the scale factor.
1718
1719---------------------------------------------------------
1720
1721See NEWS.2 for old news.
1722