Mercurial > web-octave
annotate pages/NEWS-4.0.md @ 271:3ce19581b946
LICENSE: Add "GPL-3.0-or-later" for code
author | Kai Torben Ohlhus <k.ohlhus@gmail.com> |
---|---|
date | Mon, 21 Feb 2022 17:32:38 +0900 |
parents | e69093ab4992 |
children |
rev | line source |
---|---|
215 | 1 --- |
2 layout: page | |
3 title: GNU Octave Version 4.0 | |
4 permalink: NEWS-4.0.html | |
5 --- | |
6 | |
7 ## Summary of important user-visible changes | |
8 | |
9 May 23, 2015 | |
10 | |
11 {% include release_news_select.md %} | |
12 | |
224
e69093ab4992
Improve Release Notes display.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
216
diff
changeset
|
13 {::options parse_block_html="true" /} |
e69093ab4992
Improve Release Notes display.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
216
diff
changeset
|
14 <div class="panel callout"> |
e69093ab4992
Improve Release Notes display.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
216
diff
changeset
|
15 * TOC |
e69093ab4992
Improve Release Notes display.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
216
diff
changeset
|
16 {:toc} |
e69093ab4992
Improve Release Notes display.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
216
diff
changeset
|
17 </div> |
e69093ab4992
Improve Release Notes display.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
216
diff
changeset
|
18 {::options parse_block_html="false" /} |
e69093ab4992
Improve Release Notes display.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
216
diff
changeset
|
19 |
e69093ab4992
Improve Release Notes display.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
216
diff
changeset
|
20 |
215 | 21 <pre> |
22 ** A graphical user interface is now the default when running Octave | |
23 interactively. The start-up option --no-gui will run the familiar | |
24 command line interface, and still allows use of the GUI dialogs and | |
25 qt plotting toolkit. The option --no-gui-libs runs a minimalist | |
26 command line interface that does not link with the Qt libraries and | |
27 uses the fltk toolkit for plotting. | |
28 | |
29 ** Octave now uses OpenGL graphics with Qt widgets by default. If OpenGL | |
30 libraries are not available when Octave is built, gnuplot is used. | |
31 You may choose to use the fltk or gnuplot toolkit for graphics by | |
32 executing the command | |
33 | |
34 graphics_toolkit ("fltk") | |
35 OR | |
36 graphics_toolkit ("gnuplot") | |
37 | |
38 Adding such a command to your ~/.octaverc file will set the default | |
39 for each session. | |
40 | |
41 ** A new syntax for object oriented programming termed classdef has been | |
42 introduced. See the manual for more extensive documentation of the | |
43 classdef interface. | |
44 | |
45 New keywords: | |
46 | |
47 classdef endclassdef | |
48 enumeration endenumeration | |
49 events endevents | |
50 methods endmethods | |
51 properties endproperties | |
52 | |
53 ** New audio functions and classes: | |
54 | |
55 audiodevinfo audioread sound | |
56 audioinfo audiorecorder soundsc | |
57 audioplayer audiowrite | |
58 | |
59 ** Other new classes in Octave 4.0: | |
60 | |
61 audioplayer inputParser | |
62 audiorecorder | |
63 | |
64 ** Optional stricter Matlab compatibility for ranges, diagonal matrices, | |
65 and permutation matrices. | |
66 | |
67 Octave has internal optimizations which use space-efficient storage | |
68 for the three data types above. Three new functions have been added | |
69 which control whether the optimizations are used (default), or whether | |
70 the data types are stored as full matrices. | |
71 | |
72 disable_range disable_diagonal_matrix disable_permutation_matrix | |
73 | |
74 All three optimizations are disabled if Octave is started with the | |
75 --braindead command line option. | |
76 | |
77 ** The preference | |
78 | |
79 do_braindead_shortcircuit_evaluation | |
80 | |
81 is now enabled by default. | |
82 | |
83 ** The preference | |
84 | |
85 allow_noninteger_range_as_index | |
86 | |
87 is now enabled by default and the warning ID | |
88 | |
89 Octave:noninteger-range-as-index | |
90 | |
91 is now set to "on" by default instead of "error" by default and "on" | |
92 for --traditional. | |
93 | |
94 ** The "backtrace" warning option is now enabled by default. This change | |
95 was made for Matlab compatibility. | |
96 | |
97 ** For compatibility with Matlab, the "ismatrix (x)" function now only checks | |
98 the dimension of "x". The old behaviour of "ismatrix" is obtained by | |
99 "isnumeric (x) || islogical (x) || ischar (x)". | |
100 | |
101 ** The nextpow2 function behaviour has been changed for vector inputs. | |
102 Instead of computing `nextpow2 (length (x))', it will now compute | |
103 nextpow2 for each element of the input. This change is Matlab compatible, | |
104 and also prevents bugs for "vectors" of length 1. | |
105 | |
106 ** polyeig now returns a row vector of eigenvalues rather than a matrix | |
107 with the eigenvalues on the diagonal. This change was made for Matlab | |
108 compatibility. | |
109 | |
110 ** Interpolation function changes for Matlab compatibility | |
111 | |
112 The interpolation method 'cubic' is now equivalent to 'pchip' | |
113 for interp1, interp2, and interp3. Previously, 'cubic' was equivalent | |
114 to 'spline' for interp2. This may produce different results as 'spline' | |
115 has continuous 1st and 2nd derivatives while 'pchip' only has a continuous | |
116 1st derivative. The methods 'next' and 'previous' have been added to | |
117 interp1 for compatibility. | |
118 | |
119 ** The delaunay function has been extended to accept 3-D inputs for | |
120 Matlab compatibility. The delaunay function no longer plots the | |
121 triangulation if no output argument is requested, instead, the | |
122 triangulation is always returned. The delaunay3 function which | |
123 handles 3-D inputs has been deprecated in favor of delaunay. | |
124 | |
125 ** The trigonometric functions asin and acos return different phase values | |
126 from previous versions of Octave when the input is outside the principal | |
127 branch ([-1, 1]). If the real portion of the input is greater than 1 then | |
128 the limit from below is taken. If the real portion is less than 1 then the | |
129 limit from above is taken. This criteria is consistent with several other | |
130 numerical analysis software packages. | |
131 | |
132 ** The hyperbolic function acosh now returns values with a phase in the range | |
133 [-pi/2, +pi/2]. Previously Octave returned values in the range [0, pi]. | |
134 This is consistent with several other numerical analysis software packages. | |
135 | |
136 ** strfind changes when using empty pattern ("") for Matlab compatibility | |
137 | |
138 strfind now returns an empty array when the pattern itself is empty. | |
139 In previous versions of Octave, strfind matched at every character | |
140 location when the pattern was empty. | |
141 | |
142 NEW | |
143 strfind ("abc", "") => [] | |
144 OLD | |
145 strfind ("abc", "") => [1, 2, 3, 4] | |
146 | |
147 ** Integer formats used in the printf family of functions now work for | |
148 64-bit integers and are more compatible with Matlab when printing | |
149 non-integer values. Now instead of truncating, Octave will switch | |
150 the effective format to '%g' in the following circumstances: | |
151 | |
152 * the value of an integer type (int8, uint32, etc.) value exceeds | |
153 the maximum for the format specifier. For '%d', the limit is | |
154 intmax ('int64') and for '%u' it is intmax ('uint64'). | |
155 | |
156 * round(x) != x or the value is outside the range allowed by the | |
157 integer format specifier. | |
158 | |
159 There is still one difference: Matlab switches to '%e' and Octave | |
160 switches to '%g'. | |
161 | |
162 ** The functions intersect, setdiff, setxor, and union now return a | |
163 column vector as output unless the input was a row vector. This change | |
164 was made for Matlab compatibility. | |
165 | |
166 ** The inpolygon function now returns true for points that are within | |
167 the polygon OR on it's edge. This change was made for Matlab | |
168 compatibility. | |
169 | |
170 ** The archive family of functions (bzip2, gzip, zip, tar) and their | |
171 unpacking routines (bunzip2, gunzip, unzip, untar, unpack) have | |
172 been recoded. Excepting unpack, the default is now to place files | |
173 in the same directory as the archive (on unpack) or as the original | |
174 files (on archiving). | |
175 | |
176 ** Qt and FLTK graphics toolkits now support offscreen rendering on Linux. | |
177 In other words, print will work even when the figure visibility is "off". | |
178 | |
179 ** Z-order stacking issues with patches, grid lines, and line object | |
180 plot markers for on screen display and printing have all been resolved. | |
181 For 2-D plots the axis grid lines can be placed on top of the plot | |
182 with set (gca, "layer", "top"). | |
183 | |
184 ** The patch graphic object has been overhauled. It now produces visual | |
185 results equivalent to Matlab even for esoteric combinations of | |
186 faces/vertices/cdata. | |
187 | |
188 ** The polar() plot function now draws a circular theta axis and | |
189 radial rho axis rather than using a rectangular x/y axis. | |
190 | |
191 ** linkprop has been completely re-coded for performance and Matlab | |
192 compatibility. It now returns a linkprop object which must be stored | |
193 in a variable for as long as the graphic objects should remain linked. | |
194 To unlink properties use 'clear hlink' where hlink is the variable | |
195 containing the linkprop object. | |
196 | |
197 ** isprime has been extended to operate on negative and complex inputs. | |
198 | |
199 ** xor has been extended to accept more than two arguments in which case | |
200 it performs cumulative XOR reduction. | |
201 | |
202 ** The following functions now support N-dimensional arrays: | |
203 | |
204 fliplr flipud rot90 rectint | |
205 | |
206 ** The new warning ID "Octave:data-file-in-path" replaces the three | |
207 previous separate warning IDs "Octave:fopen-file-in-path", | |
208 "Octave:load-file-in-path", and "Octave:md5sum-file-in-path". | |
209 | |
210 ** The warning ID Octave:singular-matrix-div has been replaced by | |
211 Octave:nearly-singular-matrix and Octave:singular-matrix. | |
212 | |
213 ** The warning ID Octave:matlab-incompatible has been replaced by | |
214 Octave:language-extension to better reflect its meaning. | |
215 | |
216 ** The warning ID Octave:broadcast has been removed. Instead automatic | |
217 broadcasting will throw an Octave:language-extension warning. This | |
218 warning ID is used for broadcasting as well as other features not | |
219 available in Matlab. | |
220 | |
221 ** Other new functions added in 4.0: | |
222 | |
223 annotation | |
224 bandwidth | |
225 cubehelix | |
226 dir_in_loadpath | |
227 flip | |
228 frame2im | |
229 get_home_directory | |
230 hgload | |
231 hgsave | |
232 ichol | |
233 ilu | |
234 im2frame | |
235 isbanded | |
236 isdiag | |
237 isstudent | |
238 istril | |
239 istriu | |
240 javachk | |
241 jit_failcnt | |
242 linkaxes | |
243 lscov | |
244 metaclass | |
245 numfields | |
246 open | |
247 ordschur | |
248 pan | |
249 qmr | |
250 rotate | |
251 rotate3d | |
252 sylvester | |
253 unsetenv | |
254 validateattributes | |
255 zoom | |
256 | |
257 ** inline() scheduled for eventual deprecation by Matlab | |
258 | |
259 Functions created through the use of inline are scheduled for deprecation | |
260 by Matlab. When this occurs Octave will continue to support inline | |
261 functions for an indeterminate amount of time before also removing support. | |
262 All new code should use anonymous functions in place of inline functions. | |
263 | |
264 ** Deprecated functions. | |
265 | |
266 The following functions have been deprecated in Octave 4.0 and will | |
267 be removed from Octave 4.4 (or whatever version is the second major | |
268 release after 4.0): | |
269 | |
270 Function | Replacement | |
271 ---------------------|------------------ | |
272 bicubic | interp2 | |
273 delaunay3 | delaunay | |
274 dump_prefs | individual preference get/set routines | |
275 find_dir_in_path | dir_in_loadpath | |
276 finite | isfinite | |
277 fmod | rem | |
278 fnmatch | glob or regexp | |
279 loadaudio | audioread | |
280 luinc | ilu or ichol | |
281 mouse_wheel_zoom | mousewheelzoom axes property | |
282 nfields | numfields | |
283 octave_tmp_file_name | tempname | |
284 playaudio | audioplayer | |
285 saveaudio | audiowrite | |
286 syl | sylvester | |
287 usage | print_usage | |
288 | |
289 allow_noninteger_range_as_index | |
290 do_braindead_shortcircuit_evaluation | |
291 setaudio | |
292 | |
293 ** The following functions were deprecated in Octave 3.8 and will be | |
294 removed from Octave 4.2 (or whatever version is the second major | |
295 release after 3.8): | |
296 | |
297 default_save_options java_new | |
298 gen_doc_cache java_unsigned_conversion | |
299 interp1q javafields | |
300 isequalwithequalnans javamethods | |
301 java_convert_matrix re_read_readline_init_file | |
302 java_debug read_readline_init_file | |
303 java_invoke saving_history | |
304 | |
305 ** The following functions were deprecated in Octave 3.6 and have been | |
306 removed from Octave 4.0. | |
307 | |
308 cut polyderiv | |
309 cor shell_cmd | |
310 corrcoef studentize | |
311 __error_text__ sylvester_matrix | |
312 error_text | |
313 | |
314 ** The following keywords were deprecated in Octave 3.8 and have been | |
315 removed from Octave 4.0 | |
316 | |
317 static | |
318 | |
319 ** The following configuration variables were deprecated in Octave 3.8 | |
320 and have been removed from Octave 4.0 | |
321 | |
322 CC_VERSION (now GCC_VERSION) | |
323 CXX_VERSION (now GXX_VERSION) | |
324 | |
325 ** The internal function atan2 of the sparse matrix class has been deprecated | |
326 in Octave 4.0 and will be removed from Octave 4.4 (or whatever version is | |
327 the second major release after 4.0). Use the Fatan2 function with sparse | |
328 inputs as a replacement. | |
329 | |
330 ** The internal class Octave_map was deprecated in Octave 3.8 and has | |
331 been removed from Octave 4.0. Replacement classes are | |
332 octave_map (struct array) or octave_scalar_map for a single structure. | |
333 | |
334 ** The configure option --enable-octave-allocator has been removed. | |
335 The internal class octave_allocator declared in oct-alloc.h has | |
336 been removed. The header remains, but is deprecated. The macros to | |
337 access the class (DECLARE_OCTAVE_ALLOCATOR, DEFINE_OCTAVE_ALLOCATOR, | |
338 and DEFINE_OCTAVE_ALLOCATOR2) are now unconditionally defined to be | |
339 empty. | |
340 | |
341 ** Octave now has OpenMP enabled by default if the system provides a | |
342 working OpenMP implementation. This allows oct-file modules to take | |
343 advantage of OpenMP if desired. This can be disabled when building | |
344 Octave with the configure option --disable-openmp. | |
345 | |
346 ** Octave now automatically truncates intermediate calculations done with | |
347 floating point values to 64 bits. Some hardware math co-processors, such | |
348 as the x87, maintain extra precision, but this leads to disagreements in | |
349 calculations when compared to reference implementations in software using | |
350 the IEEE standard for double precision. There was no measurable | |
351 performance impact to this change, but it may be disabled with the | |
352 configure option --disable-float-truncate. MinGW and Cygwin platforms, | |
353 as well as GCC compilers >= 5.0 require this feature. Non-x87 hardware, | |
354 or hardware using SSE options exclusively, can disable float truncation | |
355 if desired. | |
356 </pre> |