-
Notifications
You must be signed in to change notification settings - Fork 61
/
Copy pathNEWS.2
1036 lines (802 loc) · 43.2 KB
/
NEWS.2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
Summary of changes for version 2.1.x (1997-06-05 -- 2006-03-20):
---------------------------------------------------------------
* Given a matrix, X, and a boolean index, idx, of the same shape as
X, X(idx) and X(idx) = RHS now work no matter what the value of
do_fortran_indexing is.
* If you are using GNU Emacs 19.34 or earlier, you will need to add
the following code to your ~/.emacs file in order to use Emacs
Octave mode:
;; Set up the custom library.
;; taken from http://www.dina.kvl.dk/~abraham/custom/
(eval-and-compile
(condition-case ()
(require 'custom)
(error nil))
(if (and (featurep 'custom) (fboundp 'custom-declare-variable))
nil ;; We've got what we needed
;; We have the old custom-library, hack around it!
(defmacro defgroup (&rest args)
nil)
(defmacro defcustom (var value doc &rest args)
(` (defvar (, var) (, value) (, doc))))))
* When `format +' is in effect, Octave uses the following symbols to
provide more information about the values in a matrix:
+ positive real
- negative real
i pure imaginary
c complex
blank zero
* The ++ and -- operators now work for indexed matrices, and the
following operators now work:
+=, -=, *=, /=, \=, <<=, >>=, .*=, ./=, .\=, &=, |=
These operators are currently implemented using a relatively
inefficient brute-force method but hey, they work.
* The built-in variable argv is now a list of strings instead of a
string vector.
* The value of LOADPATH set by the environment variable
OCTAVE_PATH, the -p or --path command line options, or on the
command line is no longer modified to include the default path.
Instead it is left as specified. Its default value is now ":",
which tells Octave to search the default path, and the new
built-in variable DEFAULT_LOADPATH contains the default list of
directories to search.
* The function file_in_path no longer does any special processing of
its PATH argument. To search LOADPATH for files, it is now
generally better to use the new function file_in_loadpath.
* If fread is given a skip parameter, the skip is performed after
the read instead of before (for compatibility with Matlab).
* The new built-in variable `crash_dumps_octave_core' controls
whether Octave writes user variables to the file `octave-core'
when it crashes or is killed by a signal. The default value is 1
(0 if you use --traditional).
* If LOADPATH contains a doubled colon, the default path is inserted
in its place. This is similar to the substitution that also takes
place for leading or trailing colons in the LOADPATH.
* Loops of the form `for i = STRING ... endfor' are now allowed.
* It is now possible to set the iteration limit for lsode using
lsode_options ("step limit", N).
* New functions:
is_complex -- tell whether a variable is complex
rehash -- re-initialize the cache of directories in LOADPATH
graw -- send a string to the gnuplot subprocess
* New functions from Kurt Hornik's Octave-ci package:
In finance (new directory):
fv -- future value of an investment
fvl -- future value of an initial lump sum investment
irr -- internal rate of return of an investment
nper -- number of payments needed for amortizing a loan
npv -- net present value of a series of payments
pmt -- amount of periodic payment needed to amortize a loan
pv -- present value of an investment
pvl -- present value of an investment that pays off at the end
rate -- rate of return of an investment
vol -- volatility of financial time series data
In linear-algebra:
dmult -- rescale the rows of a matrix
In signal:
arch_fit -- fit an ARCH regression model
arch_rnd -- simulate an ARCH process
arch_test -- test for conditional heteroscedascity
arma_rnd -- simulate an ARMA process
autocor -- compute autocorrelations
autocov -- compute autocovariances
autoreg_matrix -- design matrix for autoregressions
bartlett -- coefficients of the Bartlett (triangular) window
blackman -- coefficients of the Blackman window
diffpara -- estimate the fractional differencing parameter
durbinlevinson -- perform one step of the Durbin-Levinson algorithm
fractdiff -- compute fractional differences
hamming -- coefficients of the Hamming window
hanning -- coefficients of the Hanning window
hurst -- estimate the Hurst parameter
periodogram -- compute the periodogram
rectangle_lw -- rectangular lag window
rectangle_sw -- rectangular spectral window
sinetone -- compute a sine tone
sinewave -- compute a sine wave
spectral_adf -- spectral density estimation
spectral_xdf -- spectral density estimation
spencer -- apply Spencer's 15-point MA filter
stft -- short-term Fourier transform
synthesis -- recover a signal from its short-term Fourier transform
triangle_lw -- triangular lag window
triangle_sw -- triangular spectral window
yulewalker -- fit AR model by Yule-Walker method
In statistics/base (new directory):
center -- center by subtracting means
cloglog -- complementary log-log function
cor -- compute correlations
cov -- compute covariances
cut -- cut data into intervals
iqr -- interquartile range
kendall -- kendall's rank correlation tau
logit -- logit transformation
mean -- compute arithmetic, geometric, and harmonic mean
meansq -- compute mean square
moment -- compute moments
ppplot -- perform a PP-plot (probability plot)
probit -- probit transformation
qqplot -- perform a QQ-plot (quantile plot)
range -- compute range
ranks -- compute ranks
run_count -- count upward runs
spearman -- spearman's rank correlation rho
statistics -- compute basic statistics
studentize -- subtract mean and divide by standard deviation
table -- cross tabulation
values -- extract unique elements
var -- compute variance
In statistics/distributions (new directory):
beta_cdf -- CDF of the Beta distribution
beta_inv -- Quantile function of the Beta distribution
beta_pdf -- PDF of the Beta distribution
beta_rnd -- Random deviates from the Beta distribution
binomial_cdf -- CDF of the binomial distribution
binomial_inv -- Quantile function of the binomial distribution
binomial_pdf -- PDF of the binomial distribution
binomial_rnd -- Random deviates from the binomial distribution
cauchy_cdf -- CDF of the Cauchy distribution
cauchy_inv -- Quantile function of the Cauchy distribution
cauchy_pdf -- PDF of the Cauchy distribution
cauchy_rnd -- Random deviates from the Cauchy distribution
chisquare_cdf -- CDF of the chi-square distribution
chisquare_inv -- Quantile function of the chi-square distribution
chisquare_pdf -- PDF of the chi-square distribution
chisquare_rnd -- Random deviates from the chi-square distribution
discrete_cdf -- CDF of a discrete distribution
discrete_inv -- Quantile function of a discrete distribution
discrete_pdf -- PDF of a discrete distribution
discrete_rnd -- Random deviates from a discrete distribution
empirical_cdf -- CDF of the empirical distribution
empirical_inv -- Quantile function of the empirical distribution
empirical_pdf -- PDF of the empirical distribution
empirical_rnd -- Bootstrap samples from the empirical distribution
exponential_cdf -- CDF of the exponential distribution
exponential_inv -- Quantile function of the exponential distribution
exponential_pdf -- PDF of the exponential distribution
exponential_rnd -- Random deviates from the exponential distribution
f_cdf -- CDF of the F distribution
f_inv -- Quantile function of the F distribution
f_pdf -- PDF of the F distribution
f_rnd -- Random deviates from the F distribution
gamma_cdf -- CDF of the Gamma distribution
gamma_inv -- Quantile function of the Gamma distribution
gamma_pdf -- PDF of the Gamma distribution
gamma_rnd -- Random deviates from the Gamma distribution
geometric_cdf -- CDF of the geometric distribution
geometric_inv -- Quantile function of the geometric distribution
geometric_pdf -- PDF of the geometric distribution
geometric_rnd -- Random deviates from the geometric distribution
hypergeometric_cdf -- CDF of the hypergeometric distribution
hypergeometric_inv -- Random deviates from hypergeometric distribution
hypergeometric_pdf -- PDF of the hypergeometric distribution
hypergeometric_rnd -- Random deviates from hypergeometric distribution
kolmogorov_smirnov_cdf -- CDF of the Kolmogorov-Smirnov distribution
laplace_cdf -- CDF of the Laplace distribution
laplace_inv -- Quantile function of the Laplace distribution
laplace_pdf -- PDF of the Laplace distribution
laplace_rnd -- Random deviates from the Laplace distribution
logistic_cdf -- CDF of the logistic distribution
logistic_inv -- Quantile function of the logistic distribution
logistic_pdf -- PDF of the logistic distribution
logistic_rnd -- Random deviates from the logistic distribution
lognormal_cdf -- CDF of the log normal distribution
lognormal_inv -- Quantile function of the log normal distribution
lognormal_pdf -- PDF of the log normal distribution
lognormal_rnd -- Random deviates from the log normal distribution
normal_cdf -- CDF of the normal distribution
normal_inv -- Quantile function of the normal distribution
normal_pdf -- PDF of the normal distribution
normal_rnd -- Random deviates from the normal distribution
pascal_cdf -- CDF of the Pascal (negative binomial) distribution
pascal_inv -- Quantile function of the Pascal distribution
pascal_pdf -- PDF of the Pascal (negative binomial) distribution
pascal_rnd -- Random deviates from the Pascal distribution
poisson_cdf -- CDF of the Poisson distribution
poisson_inv -- Quantile function of the Poisson distribution
poisson_pdf -- PDF of the Poisson distribution
poisson_rnd -- Random deviates from the Poisson distribution
stdnormal_cdf -- CDF of the standard normal distribution
stdnormal_inv -- Quantile function of standard normal distribution
stdnormal_pdf -- PDF of the standard normal distribution
stdnormal_rnd -- Random deviates from standard normal distribution
t_cdf -- CDF of the t distribution
t_inv -- Quantile function of the t distribution
t_pdf -- PDF of the t distribution
t_rnd -- Random deviates from the t distribution
uniform_cdf -- CDF of the uniform distribution
uniform_inv -- Quantile function of the uniform distribution
uniform_pdf -- PDF of the uniform distribution
uniform_rnd -- Random deviates from the uniform distribution
weibull_cdf -- CDF of the Weibull distribution
weibull_inv -- Quantile function of the Weibull distribution
weibull_pdf -- PDF of the Weibull distribution
weibull_rnd -- Random deviates from the Weibull distribution
wiener_rnd -- Simulate a Wiener process
In statistics/models (new directory):
logistic_regression -- ordinal logistic regression
logistic_regression_derivatives -- derivates of log-likelihood
in logistic regression
logistic_regression_likelihood -- likelihood in logistic regression
In statistics/tests (new directory):
anova -- one-way analysis of variance
bartlett_test -- bartlett test for homogeneity of variances
chisquare_test_homogeneity -- chi-square test for homogeneity
chisquare_test_independence -- chi-square test for independence
cor_test -- test for zero correlation
f_test_regression -- test linear hypotheses in linear
regression model
hotelling_test -- test for mean of a multivariate normal
hotelling_test_2 -- compare means of two multivariate normals
kolmogorov_smirnov_test -- one-sample Kolmogorov-Smirnov test
kolmogorov_smirnov_test_2 -- two-sample Kolmogorov-Smirnov test
kruskal_wallis_test -- kruskal-Wallis test
manova -- one-way multivariate analysis of variance
mcnemar_test -- mcnemar's test for symmetry
prop_test_2 -- compare two proportions
run_test -- run test for independence
sign_test -- sign test
t_test -- student's one-sample t test
t_test_2 -- student's two-sample t test
t_test_regression -- test one linear hypothesis in linear
regression model
u_test -- mann-Whitney U-test
var_test -- f test to compare two variances
welch_test -- welch two-sample t test
wilcoxon_test -- wilcoxon signed-rank test
z_test -- test for mean of a normal sample with
known variance
z_test_2 -- compare means of two normal samples with
known variances
* The save command now accepts the option -append to save the
variables at the end of the file, leaving the existing contents.
* New command-line option --no-history (also available using the
single character option -H) inhibits saving command history.
* The mkoctfile script now accepts -DDEF options and passes them on
to the C and C++ compilers.
* Running `make check' should work now before you run `make install',
even if you build a copy of Octave that depends on shared versions
of the Octave libraries.
* For matrices, x(:) now works and returns a column vector no matter
what the value of do_fortran_indexing is.
* New keywords __FILE__ and __LINE__ expand to the name of the file
that is being read and the current input line number, respectively.
* Octave's expression parser is more general and consistent. It is
now possible to access structure elements and index arbitrary
values. For example, expressions like
my_home_dir = getpwuid (getuid ()) . dir;
and
svd (x) (1:5)
now work.
* New built-in variable `print_rhs_assign_val' controls what is
printed when an assignment expression is evaluated. If it is
zero, the value of the variable on the left hand side (after the
assignment) is printed. If it is nonzero, the value of the right
hand side (i.e., the result of the expression) is printed. The
default value of is zero, so the behavior is the same as in
previous versions of Octave.
* tmpnam now takes two optional arguments, DIR, and PREFIX. For
example, tmpnam ("/foo", "bar-") returns a file name like
"/foo/bar-10773baa". If DIR is omitted or empty, the value of the
environment variable TMPDIR, or /tmp is used. If PREFIX is
omitted, "oct-" is used.
* The built-in variable `PWD' has been removed. If you need to get
the value of the current working directory, use the pwd() function
instead.
* New operators. Octave's parser now recognizes the following
operators: << >> += -= *= /= .+= .-= .*= ./= &= |= <<= >>=. So
far, there are only a few operations defined that actually use
them (this should change before 2.1 is released).
* New built-in data types:
logical:
A true value is represented by 1, and false value by 0.
Comparison operations like <, <=, ==, >, >=, and != now return
logical values. Indexing operations that use zero-one style
indexing must now use logical values. You can use the new
function logical() to convert a numeric value to a logical
value. This avoids the need for the built-in variable
`prefer_zero_one_indexing', so it has been removed. Logical
values are automatically converted to numeric values where
appropriate.
file:
A file object represents an open Octave stream object. The
fopen function now returns a file object instead of an integer.
File objects can be converted to integers automatically, and the
other functions that work with file ids still work with
integers, so this change should be backward compatible.
The binary left-shift operator `<<' has been defined to work as
in C++ for file objects and built-in types. For example,
my_stream = fopen ("foo", "w");
my_stream << "x = " << pi << " marks the spot\n";
writes `x = 3.1416 marks the spot' in the file foo.
The built-in variables stdin, stdout, and stderr are now also
file objects instead of integers.
list:
A list is an array of Octave objects. It can be indexed using
the normal indexing operator. For example,
x = list ([1,2;3,4], 1, "foo");
stdout << x(2) << "\n"
1
stdout << x;
(
[1] =
1 2
3 4
[2] = 1
[3] = foo
)
There is currently no special syntax for creating lists; you
must use the list function.
* Commas in global statements are no longer special. They are now
treated as command separators. This removes a conflict in the
grammar and is consistent with the way Matlab behaves. The
variable `warn_comma_in_global_decl' has been eliminated.
* It is now possible to declare static variables that retain their
values across function calls. For example,
function ncall = f () static n = 0; ncall = ++n; endfunction
defines a function that returns the number of times that it has
been called.
* Within user-defined functions, the new automatic variable `argn'
contains the names of the arguments that were passed to the
function. For example,
function f (...)
for i = 1:nargin
stdout << "argn(" << i << ") = `" << deblank (argn(i,:)) \
<< "' and its value is " << va_arg () << "\n";
endfor
endfunction
f (1+2, "foo", sin (pi/2))
prints
argn(1) = `1 + 2' and its value is 3
argn(2) = `"foo"' and its value is foo
argn(3) = `sin (pi)' and its value is 1
on the standard output stream. If nargin is zero, argn is not defined.
* Functions like quad, fsolve, and lsode can take either a function
name or a simple function body as a string. For example,
quad ("sqrt (x)", 0, 1)
is equivalent to
function y = f (x) y = sqrt (x); endfunction
quad ("f", 0, 1)
* If the argument to eig() is symmetric, Octave uses the specialized
Lapack subroutine for symmetric matrices for a significant
increase in performance.
* If the argument to lsode that names the user-supplied function is
a 2-element string array, the second element is taken as the name
of the Jacobian function. The named function should have the
following form:
JAC = f (X, T)
where JAC is the Jacobian matrix of partial derivatives of the
right-hand-side functions that define the set of differential
equations with respect to the state vector X.
* Global variables are now initialized to the empty matrix, for
compatibility with Matlab.
* Explicit initialization of global variables only happens once.
For example, after the following statements are evaluated, g still
has the value 1.
global g = 1
global g = 2
This is useful for initializing global variables that are used to
maintain state information that is shared among several functions.
* Structure elements completion on the command line actually works
now.
* The new built-in variable `fixed_point_format' controls whether
Octave uses a scaled fixed-point format for displaying matrices.
The default value is 0 unless you use --traditional.
* The function sumsq now computes sum (x .* conj (x)) for complex values.
* The new built-in variable max_recursion_depth allows you to
prevent Octave from attempting infinite recursion. The default
value is 256.
* Octave now uses kpathsea 3.2.
* New configure option, --enable-readline.
* New configure option, --enable-static.
Summary of changes for version 2.0.7 (1997-06-04):
-------------------------------------------------
This is a bug-fixing release. There are no new user-visible features.
Summary of changes for version 2.0.6 (1997-05-27):
-------------------------------------------------
This is primarily a bug-fixing release. There are only a few new
user-visible features.
* The new built-in variable default_eval_print_flag controls whether
Octave prints the results of commands executed by eval() that do
not end with semicolons. The default is 1.
* The new built-in constant OCTAVE_HOME specifies the top-level
directory where Octave is installed.
* Octave no longer includes functions to work with NPSOL or QPSOL,
because they are not free software.
* The new built-in variable called kluge_procbuf_delay specifies the
number of microseconds to delay in the parent process after
forking. By default on gnu-win32 systems, it's set to 500000 (1/2
second). On other systems, the default value is 0. Delaying for
a short time in the parent after forking seems to avoid problems
in which communicating with subprocesses via pipes would sometimes
cause Octave to hang. I doubt that the delay is really the right
solution. If anyone has a better idea, I'd love to hear it.
Summary of changes for version 2.0.5 (1997-03-01):
-------------------------------------------------
* A `switch' statement is now available. See the Statements chapter
in the manual for details.
* Commands like ls, save, and cd may now also be used as formal
parameters for functions.
* More tests.
Summary of changes for version 2.0.4 (1997-02-20):
-------------------------------------------------
* It is now possible to use commands like ls, save, and cd as simple
variable names. They still cannot be used as formal parameters
for functions, or as the names of structure variables. Failed
assignments leave them undefined (you can recover the original
function definition using clear).
* Is is now possible to invoke commands like ls, save, and cd as
normal functions (for example, load ("foo", "x", "y", "z")).
Summary of changes for version 2.0.3 (1997-02-18):
-------------------------------------------------
* The manual has been completely revised and now corresponds much
more closely to the features of the current version.
* The return value for assignment expressions is now the RHS since
that is more consistent with the way other programming languages
work. However, Octave still prints the entire LHS value so that
x = zeros (1, 2);
x(2) = 1
still prints
x =
0 1
but an assignment like
z = x(2) = 1
sets z to 1 (not [ 0, 1 ] as in previous versions of Octave).
* It is now much easier to make binary distributions. See the
Binary Distributions section of the manual for more details.
Summary of changes for version 2.0.2 (1997-01-27):
-------------------------------------------------
* Octave now stops executing commands from a script file if an error
is encountered.
* The return, and break commands now cause Octave to quit executing
commands from script files. When used in invalid contexts, the
break, continue, and return commands are now simply ignored
instead of producing parse errors.
* size ("") is now [0, 0].
* New functions:
sleep -- pause execution for a specified number of seconds
usleep -- pause execution for a specified number of microseconds
Summary of changes for version 2.0 (1996-12-10):
-----------------------------------------------
* The set and show commands for setting and displaying gnuplot
parameters have been replaced by gset and gshow. This change will
probably break lots of things, but it is necessary to allow for
compatibility with the Matlab graphics and GUI commands in a
future version of Octave. (For now, the old set and show commands
do work, but they print an annoying warning message to try to get
people to switch to using gset.)
* Octave has been mostly ported to Windows NT and Windows 95 using
the beta 17 release of the Cygnus GNU-WIN32 tools. Not everything
works, but it is usable. See the file README.WINDOWS for more
information.
* Dynamic linking works on more systems using dlopen() and friends
(most modern Unix systems) or shl_load() and friends (HP/UX
systems). A simple example is provided in examples/hello.cc.
For this feature to work, you must configure Octave with
--enable-shared. You may also need to have a shared-library
version of libg++ and libstdc++.
* New data types can be added to Octave by writing a C++ class. On
systems that support dynamic linking, new data types can be added
to an already running Octave binary. A simple example appears in
the file examples/make_int.cc. Other examples are the standard
Octave data types defined in the files src/ov*.{h,cc} and
src/op-*.cc.
* The configure option --enable-bounds-check turns on bounds
checking on element references for Octave's internal array and
matrix classes. It's enabled by default. To disable this
feature, configure Octave with --disable-bounds-check.
* The C-style I/O functions (fopen, fprintf, etc.) have been
rewritten to be more compatible with Matlab. The fputs function
has also been added. Usage of the *printf functions that was
allowed in previous versions of Octave should still work.
However, there is no way to make the new versions of the *scanf
functions compatible with Matlab *and* previous versions of
Octave. An optional argument to the *scanf functions is now
available to make them behave in a way that is compatible with
previous versions of Octave.
* Octave can now read files that contain columns of numbers only,
with no header information. The name of the loaded variable is
constructed from the file name. Each line in the file must have
the same number of elements.
* The interface to the pager has changed. The new built-in variable
`page_output_immediately' controls when Octave sends output to the
pager. If it is nonzero, Octave sends output to the pager as soon
as it is available. Otherwise, Octave buffers its output and
waits until just before the prompt is printed to flush it to the
pager.
* Expressions of the form
A(i,j) = x
where X is a scalar and the indices i and j define a matrix of
elements now work as you would expect rather than giving an error.
I am told that this is how Matlab 5.0 will behave when it is
released.
* Indexing of character strings now works.
* The echo command has been implemented.
* The document command is now a regular function.
* New method for handling errors:
try
BODY
catch
CLEANUP
end_try_catch
Where BODY and CLEANUP are both optional and may contain any
Octave expressions or commands. The statements in CLEANUP are
only executed if an error occurs in BODY.
No warnings or error messages are printed while BODY is
executing. If an error does occur during the execution of BODY,
CLEANUP can access the text of the message that would have been
printed in the builtin constant __error_text__. This is the same
as eval (TRY, CATCH) (which may now also use __error_text__) but
it is more efficient since the commands do not need to be parsed
each time the TRY and CATCH statements are evaluated.
* Octave no longer parses the help command by grabbing everything
after the keyword `help' until a newline character is read. To
get help for `;' or `,', now, you need to use the command
`help semicolon' or `help comma'.
* Octave's parser now does some simple constant folding. This means
that expressions like 3*i are now evaluated only once, when a
function is compiled, and the right hand side of expressions like
a = [1,2;3,4] are treated as true matrix constants rather than
lists of elements which must be evaluated each time they are
needed.
* Built-in variables that can take values of "true" and "false" can
now also be set to any nonzero scalar value to indicate "true",
and 0 to indicate "false".
* New built-in variables `history_file', `history_size', and
`saving_history'.
* New built-in variable `string_fill_char' specifies the character
to fill with when creating arrays of strings.
* If the new built-in variable `gnuplot_has_frames' is nonzero,
Octave assumes that your copy of gnuplot includes support for
multiple plot windows when using X11.
If the new built-in variable `gnuplot_has_multiplot' is nonzero,
Octave assumes that your copy of gnuplot has the multiplot support
that is included in recent 3.6beta releases.
The initial values of these variables are determined by configure,
but can be changed in your startup script or at the command line
in case configure got it wrong, or if you upgrade your gnuplot
installation.
* The new plot function `figure' allows multiple plot windows when
using newer versions of gnuplot with X11.
* Octave now notices when the plotter has exited unexpectedly.
* New built-in variable `warn_missing_semicolon'. If nonzero, Octave
will warn when statements in function definitions don't end in
semicolons. The default value is 0.
* Octave now attempts to continue after floating point exceptions
or out-of-memory errors.
* If Octave crashes, it now attempts to save all user-defined
variables in a file named `octave-core' in the current directory
before exiting.
* It is now possible to get the values of individual option settings
for the dassl, fsolve, lsode, npsol, qpsol, and quad functions
using commands like
dassl_reltol = dassl_options ("relative tolerance");
* The svd() function no longer computes the left and right singular
matrices unnecessarily. This can significantly improve
performance for large matrices if you are just looking for the
singular values.
* The filter() function is now a built-in function.
* New function randn() returns a pseudo-random number from a normal
distribution. The rand() and randn() functions have separate
seeds and generators.
* Octave's command-line arguments are now available in the built-in
variable `argv'. The program name is also available in the
variables `program_invocation_name' and `program_name'. If
executing a script from the command line (e.g., octave foo.m) or
using the `#! /bin/octave' hack, the program name is set to the
name of the script.
* New built-in variable `completion_append_char' used as the
character to append to successful command-line completion
attempts. The default is " " (a single space).
* Octave now uses a modified copy of the readline library from
version 1.14.5 of GNU bash.
* In prompt strings, `\H' expands to the whole host name.
* New built-in variable `beep_on_error'. If nonzero, Octave will try
to ring your terminal's bell before printing an error message.
The default value is 0.
* For functions defined from files, the type command now prints the
text of the file. You can still get the text reconstructed from
the parse tree by using the new option -t (-transformed).
* New command-line argument --traditional sets the following
preference variables for compatibility with Matlab:
PS1 = ">> "
PS2 = ""
beep_on_error = 1
default_save_format = "mat-binary"
define_all_return_values = 1
do_fortran_indexing = 1
empty_list_elements_ok = 1
implicit_str_to_num_ok = 1
ok_to_lose_imaginary_part = 1
page_screen_output = 0
prefer_column_vectors = 0
prefer_zero_one_indexing = 1
print_empty_dimensions = 0
treat_neg_dim_as_zero = 1
warn_function_name_clash = 0
whitespace_in_literal_matrix = "traditional"
* New functions:
readdir -- returns names of files in directory as array of strings
mkdir -- create a directory
rmdir -- remove a directory
rename -- rename a file
unlink -- delete a file
umask -- set permission mask for file creation
stat -- get information about a file
lstat -- get information about a symbolic link
glob -- perform filename globbing
fnmatch -- match strings with filename globbing patterns
more -- turn the pager on or off
gammaln -- alias for lgamma
* New audio functions from Andreas Weingessel
lin2mu -- linear to mu-law encoding
loadaudio -- load an audio file to a vector
mu2lin -- mu-law to linear encoding
playaudio -- play an audio file
record -- record sound and store in vector
saveaudio -- save a vector as an audio file
setaudio -- executes mixer shell command
* New plotting functions from Vinayak Dutt. Ones dealing with
multiple plots on one page require features from gnuplot 3.6beta
(or later).
bottom_title -- put title at the bottom of the plot
mplot -- multiplot version of plot
multiplot -- switch multiple-plot mode on or off
oneplot -- return to one plot per page
plot_border -- put a border around plots
subplot -- position multiple plots on a single page
subwindow -- set subwindow position for next plot
top_title -- put title at the top of the plot
zlabel -- put a label on the z-axis
* New string functions
bin2dec -- convert a string of ones and zeros to an integer
blanks -- create a string of blanks
deblank -- delete trailing blanks
dec2bin -- convert an integer to a string of ones and zeros
dec2hex -- convert an integer to a hexadecimal string
findstr -- locate occurrences of one string in another
hex2dec -- convert a hexadecimal string to an integer
index -- return position of first occurrence a string in another
rindex -- return position of last occurrence a string in another
split -- divide one string into pieces separated by another
str2mat -- create a string matrix from a list of strings
strrep -- replace substrings in a string
substr -- extract a substring
The following functions return a matrix of ones and zeros.
Elements that are nonzero indicate that the condition was true for
the corresponding character in the string array.
isalnum -- letter or a digit
isalpha -- letter
isascii -- ascii
iscntrl -- control character
isdigit -- digit
isgraph -- printable (but not space character)
islower -- lower case
isprint -- printable (including space character)
ispunct -- punctuation
isspace -- whitespace
isupper -- upper case
isxdigit -- hexadecimal digit
These functions return new strings.
tolower -- convert to lower case
toupper -- convert to upper case
* New function, fgetl. Both fgetl and fgets accept an optional
second argument that specifies a maximum number of characters to
read, and the function fgets is now compatible with Matlab.
* Printing in hexadecimal format now works (format hex). It is also
possible to print the internal bit representation of a value
(format bit). Note that these formats are only implemented for
numeric values.
* Additional structure features:
-- Name completion now works for structures.
-- Values and names of structure elements are now printed by
default. The new built-in variable `struct_levels_to_print'
controls the depth of nested structures to print. The default
value is 2.
-- New functions:
struct_contains (S, NAME) -- returns 1 if S is a structure with
element NAME; otherwise returns 0.
struct_elements (S) -- returns the names of all elements
of structure S in an array of strings.
* New io/subprocess functions:
fputs -- write a string to a file with no formatting
popen2 -- start a subprocess with 2-way communication
mkfifo -- create a FIFO special file
popen -- open a pipe to a subprocess
pclose -- close a pipe from a subprocess
waitpid -- check the status of or wait for subprocesses
* New time functions:
asctime -- format time structure according to local format
ctime -- equivalent to `asctime (localtime (TMSTRUCT))'
gmtime -- return time structure corresponding to UTC
localtime -- return time structure corresponding to local time zone
strftime -- print given time structure using specified format
time -- return current time
The `clock' and `date' functions are now implemented in M-files
using these basic functions.
* Access to additional Unix system calls:
dup2 -- duplicate a file descriptor
exec -- replace current process with a new process
fcntl -- control open file descriptors
fork -- create a copy of the current process
getpgrp -- return the process group id of the current process
getpid -- return the process id of the current process
getppid -- return the process id of the parent process
getuid -- return the real user id of the current process
getgid -- return the real group id of the current process
geteuid -- return the effective user id of the current process
getegid -- return the effective group id of the current process
pipe -- create an interprocess channel
* Other new functions:
commutation_matrix -- compute special matrix form
duplication_matrix -- compute special matrix form
common_size.m -- bring arguments to a common size
completion_matches -- perform command completion on string
tilde_expand -- perform tilde expansion on string
meshgrid -- compatible with Matlab's meshgrid function
tmpnam -- replaces octave_tmp_file_name
atexit -- register functions to be called when Octave exits
putenv -- define an environment variable
bincoeff -- compute binomial coefficients
nextpow2 -- compute the next power of 2 greater than a number
detrend -- remove a best fit polynomial from data
erfinv -- inverse error function
shift -- perform a circular shift on the elements of a matrix
pow2 -- compute 2 .^ x
log2 -- compute base 2 logarithms
diff -- compute differences of matrix elements
vech -- stack columns of a matrix below the diagonal
vec -- stack columns of a matrix to form a vector
xor -- compute exclusive or
* Functions for getting info from the password database on Unix systems:
getpwent -- read entry from password-file stream, opening if necessary
getpwuid -- search for password entry with matching user ID
getpwnam -- search for password entry with matching username
setpwent -- rewind the password-file stream
endpwent -- close the password-file stream
* Functions for getting info from the group database on Unix systems:
getgrent -- read entry from group-file stream, opening if necessary
getgrgid -- search for group entry with matching group ID
getgrnam -- search for group entry with matching group name
setgrent -- rewind the group-file stream
endgrent -- close the group-file stream
* The New function octave_config_info returns a structure containing
information about how Octave was configured and compiled.
* New function getrusage returns a structure containing system
resource usage statistics. The `cputime' function is now defined
in an M-file using getrusage.
* The info reader is now a separate binary that runs as a
subprocess. You still need the info reader distributed with
Octave though, because there are some new command-line arguments
that are not yet available in the public release of Info.
* There is a new built-in variable, INFO_PROGRAM, which is used as