comparison doc/faq/FAQ.texi @ 2333:b1a56412c385

[project @ 1996-07-19 02:20:16 by jwe] Initial revision
author jwe
date Fri, 19 Jul 1996 02:26:23 +0000
parents
children 106ae3df29f5
comparison
equal deleted inserted replaced
2332:98d0771f7484 2333:b1a56412c385
1 \input texinfo.tex @c -*-texinfo-*-
2
3 @setfilename FAQ.info
4 @settitle Frequently asked questions about Octave (with answers)
5
6 @c Smaller amounts of whitespace for the 8.5 by 11 inch format.
7 @tex
8 \global\chapheadingskip = 15pt plus 4pt minus 2pt
9 \global\secheadingskip = 12pt plus 3pt minus 2pt
10 \global\subsecheadingskip = 9pt plus 2pt minus 2pt
11 \global\parskip 5pt plus 1pt
12
13 @finalout
14 @end tex
15
16 @setchapternewpage off
17
18 @titlepage
19 @title Octave FAQ
20 @subtitle Frequently asked questions about Octave
21 @subtitle December 1, 1994
22 @sp 1
23 @author John W. Eaton
24 @page
25 @end titlepage
26
27 @ifinfo
28 @node Top, What is Octave?, (dir), (dir)
29 @top
30 @unnumbered Preface
31 @cindex FAQ for Octave, latest version
32 @end ifinfo
33
34 This is a list of frequently asked questions (FAQ) for Octave users.
35
36 Some information in this FAQ was developed for earlier versions of
37 Octave and may now be obsolete.
38
39 I'm looking for new questions (@emph{with} answers), better answers,
40 or both. Please send suggestions to bug-octave@@bevo.che.wisc.edu.
41 If you have general questions about Octave, or need help for something
42 that is not covered by the FAQ, please use the
43 help-octave@@bevo.che.wisc.edu mailing list.
44
45 This FAQ is intended to supplement, not replace, the Octave manual.
46 Before posting a question to the hlpe-octave mailing list, you should
47 first check to see if the topic is covered in the manual.
48
49 @menu
50 * What is Octave?::
51 * Version 1.1.0::
52 * Octave Features::
53 * Documentation::
54 * Getting Octave::
55 * Installation::
56 * Common problems::
57 * Getting additional help::
58 * Bug reports::
59 * MATLAB compatibility::
60 * Index::
61 @end menu
62
63 @node What is Octave?, Version 1.1.0, Top, Top
64 @chapter What is Octave?
65
66 Octave is a high-level interactive language, primarily intended for
67 numerical computations that is mostly compatible with
68 @sc{Matlab}.@footnote{@sc{Matlab} is a registered trademark of The MathWorks,
69 Inc.}
70
71 Octave can do arithmetic for real and complex scalars and matrices,
72 solve sets of nonlinear algebraic equations, integrate functions over
73 finite and infinite intervals, and integrate systems of ordinary
74 differential and differential-algebraic equations.
75
76 Octave uses the GNU readline library to handle reading and editing
77 input. By default, the line editing commands are similar to the
78 cursor movement commands used by GNU Emacs, and a vi-style line
79 editing interface is also available. At the end of each session, the
80 command history is saved, so that commands entered during previous
81 sessions are not lost.
82
83 The Octave distribution includes a 200+ page Texinfo manual. Access
84 to the complete text of the manual is available via the help command
85 at the Octave prompt.
86
87 Two and three dimensional plotting is fully supported using gnuplot.
88
89 The underlying numerical solvers are currently standard Fortran ones
90 like Lapack, Linpack, Odepack, the Blas, etc., packaged in a library
91 of C++ classes. If possible, the Fortran subroutines are compiled
92 with the system's Fortran compiler, and called directly from the C++
93 functions. If that's not possible, you can still compile Octave if
94 you have the free Fortran to C translator f2c.
95
96 Octave is also free software; you can redistribute it and/or modify it
97 under the terms of the GNU General Public License as published by the
98 Free Software Foundation.
99
100 @node Version 1.1.0, Octave Features, What is Octave?, Top
101 @chapter What's new in version 1.1.0 of Octave
102
103 The long-awaited version 1.1.0 of Octave has now been released. Many
104 bugs have been fixed and lots of new features added. Octave is now much
105 more compatible with @sc{Matlab}.
106
107 Version 1.1.0 fixes many bugs, but as with any ``x.y.0'' release there
108 will be a few glitches. You can expect a 1.1.1 shortly. You can help
109 contribute to the quality of Octave by trying it out and submitting bug
110 reports where you find them.
111
112 A list of user-visible changes in recent versions of Octave may be found
113 in the file NEWS, distributed in both source and binary releases of
114 Octave.
115
116 @node Octave Features, Documentation, Version 1.1.0, Top
117 @chapter What features are unique to Octave?
118
119 @menu
120 * Command and variable name completion::
121 * Command history::
122 * Data structures::
123 * Short-circuit boolean operators::
124 * Increment and decrement operators::
125 * Unwind-protect::
126 * Variable-length argument lists::
127 * Variable-length return lists::
128 * Built-in ODE and DAE solvers::
129 @end menu
130
131 @node Command and variable name completion, Command history, Octave Features, Octave Features
132 @section Command and variable name completion
133
134 @cindex Command completion
135 @cindex Function name completion
136 @cindex Variable name completion
137 @cindex Name completion
138
139 Typing a TAB character (ASCII code 9) on the command line causes Octave
140 to attempt to complete variable, function, and file names. Octave uses
141 the text before the cursor as the initial portion of the name to
142 complete.
143
144 For example, if you type @samp{fu} followed by TAB at the Octave prompt,
145 Octave will complete the rest of the name @samp{function} on the command
146 line (unless you have other variables or functions defined that begin
147 with the characters @samp{fu}). If there is more than one possible
148 completion, Octave will ring the terminal bell to let you know that your
149 initial sequence of characters is not enough to specify a unique name.
150 To complete the name, you may either edit the initial character sequence
151 (usually adding more characters until completion is possible) or type
152 another TAB to cause Octave to display the list of possible completions.
153
154 @node Command history, Data structures, Command and variable name completion, Octave Features
155 @section Command history
156
157 @cindex Command history
158 @cindex History
159
160 When running interactively, Octave saves the commands you type in an
161 internal buffer so that you can recall and edit them. Emacs and vi
162 editing modes are available with Emacs keybindings enabled by default.
163
164 When Octave exits, the current command history is saved to the file
165 @file{~/.octave_hist}, and each time Octave starts, it inserts the
166 contents of the @file{~/.octave_hist} file in the history list so that
167 it is easy to begin working where you left off.
168
169 @node Data structures, Short-circuit boolean operators, Command history, Octave Features
170 @section Data structures
171
172 @cindex Data structures
173 @cindex Structures
174
175 Octave includes a limited amount of support for organizing data in
176 structures. The current implementation uses an associative array
177 with indices limited to strings, but the syntax is more like C-style
178 structures. Here are some examples of using data structures in Octave.
179
180 @itemize @bullet
181 @item Elements of structures can be of any value type.
182
183 @example
184 octave:1> x.a = 1; x.b = [1, 2; 3, 4]; x.c = "string";
185 octave:2> x.a
186 x.a = 1
187 octave:3> x.b
188 x.b =
189
190 1 2
191 3 4
192
193 octave:4> x.c
194 x.c = string
195 @end example
196
197 @item Structures may be copied.
198
199 @example
200 octave:1> y = x
201 y =
202
203 <structure: a b c>
204 @end example
205
206 @item Structure elements may reference other structures.
207
208 @example
209 octave:1> x.b.d = 3
210 x.b.d = 3
211 octave:2> x.b
212 x.b =
213
214 <structure: d>
215
216 octave:3> x.b.d
217 x.b.d = 3
218 @end example
219
220 @item Functions can return structures.
221
222 @example
223 octave:1> function y = f (x)
224 > y.re = real (x);
225 > y.im = imag (x);
226 > endfunction
227
228 octave:2> f (rand + rand*I);
229 ans =
230
231 <structure: im re>
232
233 octave:3> ans.im, ans.re
234 ans.im = 0.93411
235 ans.re = 0.56234
236 @end example
237
238 @item Function return lists can include structure elements, and they may
239 be indexed like any other variable.
240
241 @example
242 octave:1> [x.u, x.s(2:3,2:3), x.v] = svd ([1, 2; 3, 4])
243 x.u =
244
245 -0.40455 -0.91451
246 -0.91451 0.40455
247
248 x.s =
249
250 0.00000 0.00000 0.00000
251 0.00000 5.46499 0.00000
252 0.00000 0.00000 0.36597
253
254 x.v =
255
256 -0.57605 0.81742
257 -0.81742 -0.57605
258
259 octave:8> x
260 x =
261
262 <structure: s u v>
263 @end example
264
265 @item You can also use the function @code{is_struct} to determine
266 whether a given value is a data structure. For example
267
268 @example
269 is_struct (x)
270 @end example
271
272 @noindent
273 returns 1 if the value of the variable @var{x} is a data structure.
274 @end itemize
275
276 This feature should be considered experimental, but you should expect it
277 to work. Suggestions for ways to improve it are welcome.
278
279 @node Short-circuit boolean operators, Increment and decrement operators, Data structures, Octave Features
280 @section Short-circuit boolean operators
281
282 @cindex Boolean operators, short-circuit
283 @cindex Logical operators, short-circuit
284 @cindex Short-circuit boolean operators
285 @cindex Operators, boolean
286
287 Octave's @samp{&&} and @samp{||} logical operators are evaluated in
288 a short-circuit fashion (like the corresponding operators in the C
289 language) and work differently than the element by element operators
290 @samp{&} and @samp{|}.
291
292 @node Increment and decrement operators, Unwind-protect, Short-circuit boolean operators, Octave Features
293 @section Increment and decrement operators
294
295 @cindex Increment operators
296 @cindex Decrement operators
297 @cindex Operators, increment
298 @cindex Operators, decrement
299
300 Octave includes the C-like increment and decrement operators @samp{++}
301 and @samp{--} in both their prefix and postfix forms.
302
303 For example, to pre-increment the variable @var{x}, you would write
304 @code{++@var{x}}. This would add one to @var{x} and then return the new
305 value of @var{x} as the result of the expression. It is exactly the
306 same as the expression @code{@var{x} = @var{x} + 1}.
307
308 To post-increment a variable @var{x}, you would write @code{@var{x}++}.
309 This adds one to the variable @var{x}, but returns the value that
310 @var{x} had prior to incrementing it. For example, if @var{x} is equal
311 to 2, the result of the expression @code{@var{x}++} is 2, and the new
312 value of @var{x} is 3.
313
314 For matrix and vector arguments, the increment and decrement operators
315 work on each element of the operand.
316
317 It is not currently possible to increment index expressions. For
318 example, you might expect that the expression @code{@var{v}(4)++} would
319 increment the fourth element of the vector @var{v}, but instead it
320 results in a parse error. This problem may be fixed in a future
321 release of Octave.
322
323 @node Unwind-protect, Variable-length argument lists, Increment and decrement operators, Octave Features
324 @section Unwind-protect
325
326 @cindex Unwind-protect
327
328 Octave supports a limited form of exception handling modelled after the
329 unwind-protect form of Lisp. The general form of an
330 @code{unwind_protect} block looks like this:
331
332 @example
333 @group
334 unwind_protect
335 @var{body}
336 unwind_protect_cleanup
337 @var{cleanup}
338 end_unwind_protect
339 @end group
340 @end example
341
342 @noindent
343 Where @var{body} and @var{cleanup} are both optional and may contain any
344 Octave expressions or commands. The statements in @var{cleanup} are
345 guaranteed to be executed regardless of how control exits @var{body}.
346
347 The @code{unwind_protect} statement is often used to reliably restore
348 the values of global variables that need to be temporarily changed.
349
350 @node Variable-length argument lists, Variable-length return lists, Unwind-protect, Octave Features
351 @section Variable-length argument lists
352
353 @cindex Variable-length argument lists
354 @cindex Argument lists, variable-length
355
356 Octave has a real mechanism for handling functions that take an
357 unspecified number of arguments, so it is no longer necessary to place
358 an upper bound on the number of optional arguments that a function can
359 accept.
360
361 Here is an example of a function that uses the new syntax to print a
362 header followed by an unspecified number of values:
363
364 @example
365 function foo (heading, ...)
366 disp (heading);
367 va_start ();
368 while (--nargin)
369 disp (va_arg ());
370 endwhile
371 endfunction
372 @end example
373
374 Calling @code{va_start()} positions an internal pointer to the first
375 unnamed argument and allows you to cycle through the arguments more than
376 once. It is not necessary to call @code{va_start()} if you do not plan
377 to cycle through the arguments more than once.
378
379 The function @code{va_arg()} returns the value of the next available
380 argument and moves the internal pointer to the next argument. It is an
381 error to call @code{va_arg()} when there are no more arguments
382 available.
383
384 It is also possible to use the keyword @var{all_va_args} to pass all
385 unnamed arguments to another function.
386
387 @node Variable-length return lists, Built-in ODE and DAE solvers, Variable-length argument lists, Octave Features
388 @section Variable-length return lists
389
390 @cindex Variable-length return lists
391 @cindex Return lists, variable-length
392
393 Octave also has a real mechanism for handling functions that return an
394 unspecified number of values, so it is no longer necessary to place an
395 upper bound on the number of outputs that a function can produce.
396
397 Here is an example of a function that uses the new syntax to produce
398 @samp{N} values:
399
400 @example
401 function [...] = foo (n)
402 for i = 1:n
403 vr_val (i);
404 endfor
405 endfunction
406 @end example
407
408 @node Built-in ODE and DAE solvers, , Variable-length return lists, Octave Features
409 @section Built-in ODE and DAE solvers
410
411 @cindex DASSL
412 @cindex LSODE
413
414 Octave includes LSODE and DASSL for solving systems of stiff
415 differential and differential-algebraic equations. These functions are
416 built in to the interpreter.
417
418 @node Documentation, Getting Octave, Octave Features, Top
419 @chapter What documentation exists for Octave?
420
421 @cindex Octave, documentation
422
423 The Octave distribution includes a 220+ page manual that is also
424 distributed under the terms of the GNU GPL.
425
426 The Octave manual is intended to be a complete reference for Octave, but
427 it is not a finished document. If you have problems using it, or find
428 that some topic is not adequately explained, indexed, or
429 cross-referenced, please send a bug report to bug-octave@@bevo.che.wisc.edu.
430
431 Because the Octave manual is written using Texinfo, the complete text of
432 the Octave manual is also available on line using the GNU Info system
433 via the GNU Emacs, info, or xinfo programs, or by using the @samp{help -i}
434 command to start the GNU info browser directly from the Octave prompt.
435
436 It is also possible to use WWW browsers such as Mosaic to read the
437 Octave manual (or any other Info file) by using Roar Smith's info2www
438 program to convert GNU Info files to HTML. The source for info2www is
439 available via anonymous ftp from ftp.che.wisc.edu in the directory
440 @file{/pub/www}.
441
442 @node Getting Octave, Installation, Documentation, Top
443 @chapter Obtaining Source Code
444
445 @cindex Source code
446
447 @menu
448 * Octave for Unix::
449 * Octave for other platforms::
450 * latest versions::
451 @end menu
452
453 @node Octave for Unix, Octave for other platforms, Getting Octave, Getting Octave
454 @section How do I get a copy of Octave for Unix?
455
456 You can get Octave from a friend who has a copy, by anonymous FTP, or by
457 ordering a tape or CD-ROM from the Free Software Foundation (FSF).
458
459 @cindex Octave, ordering
460 @cindex Octave, getting a copy
461
462 Octave was not developed by the FSF, but the FSF does distribute Octave,
463 and the developers of Octave support the efforts of the FSF by
464 encouraging users of Octave to order Octave on tape or CD directly from
465 the FSF.
466
467 The FSF is a nonprofit organization that distributes software and
468 manuals to raise funds for more GNU development. Buying a tape or CD
469 from the FSF contributes directly to paying staff to develop GNU
470 software. CD-ROMs cost $400 if an organization is buying, or $100 if an
471 individual is buying. Tapes cost around $200 depending on media type.
472
473 The FSF only makes new CD releases a few times a year, so if you are
474 interested specifically in Octave, I recommend asking for the latest
475 release on tape.
476
477 @cindex FSF [Free Software Foundation]
478 @cindex GNU [GNU's not unix]
479
480 For more information about ordering from the FSF, contact
481 gnu@@prep.ai.mit.edu, phone (617) 542-5942 or anonymous ftp file
482 @file{/pub/gnu/GNUinfo/ORDERS} from prep.ai.mit.edu or one of the sites
483 listed below.
484
485 @cindex FSF, contact <gnu@@prep.ai.mit.edu>
486 @cindex GNUware, anonymous FTP sites
487
488 If you are on the Internet, you can copy the latest distribution
489 version of Octave from the file @file{/pub/octave/octave-M.N.tar.gz}, on
490 the host @file{ftp.che.wisc.edu}. This tar file has been compressed
491 with GNU gzip, so be sure to use binary mode for the transfer. @samp{M}
492 and @samp{N} stand for version numbers; look at a listing of the
493 directory through ftp to see what version is available. After you
494 unpack the distribution, be sure to look at the files @file{README} and
495 @file{INSTALL}.
496
497 Binaries for several popular systems are also available. If you would
498 like help out by making binaries available for other systems, please
499 contact bug-octave@@bevo.che.wisc.edu.
500
501 A list of user-visible changes since the last release is available in
502 the file @file{NEWS}. The file @file{ChangeLog} in the source
503 distribution contains a more detailed record of changes made since the
504 last release.
505
506 @node Octave for other platforms, latest versions, Octave for Unix, Getting Octave
507 @section How do I get a copy of Octave for (some other platform)?
508
509 @cindex VMS support
510 @cindex VAX
511 @cindex MS-DOS support
512 @cindex DJGPP
513 @cindex EMX
514 @cindex OS/2 support
515
516 Octave currently runs on Unix-like systems only. It should be possible
517 to make Octave work on other systems. If you are interested in porting
518 Octave to other systems, please contact bug-octave@@bevo.che.wisc.edu.
519
520 @node latest versions, , Octave for other platforms, Getting Octave
521 @section What is the latest version of Octave
522
523 @cindex Octave, version date
524
525 The latest version of Octave is 1.1.0, released January 1995.
526
527 @node Installation, Common problems, Getting Octave, Top
528 @chapter Installation Issues and Problems
529
530 @cindex Octave, building
531
532 Octave requires approximately 50MB of disk storage to unpack and
533 install (significantly less if you don't compile with debugging
534 symbols).
535
536 Octave has been compiled and tested with g++ and libg++ on a
537 SPARCstation 2 running SunOS 4.1.2, an IBM RS/6000 running AIX 3.2.5,
538 DEC Alpha systems running OSF/1 1.3 and 3.0, a DECstation 5000/240
539 running Ultrix 4.2a, and i486 systems running Linux. It should work on
540 most other Unix systems that have a working port of g++ and libg++.
541
542 @menu
543 * What else do I need?::
544 * Other C++ compilers?::
545 @end menu
546
547 @node What else do I need?, Other C++ compilers?, Installation, Installation
548 @section What else do I need?
549
550 @cindex GNU gcc
551 @cindex GNU g++
552 @cindex libg++
553 @cindex GNU Make
554 @cindex Flex
555 @cindex GNU Bison
556
557 In order to build Octave, you will need a current version
558 of g++, libg++, and GNU make. If you don't have these tools, you can
559 get them from many anonymous ftp archives, including ftp.che.wisc.edu,
560 ftp.uu.net, prep.ai.mit.edu, and wuarchive.wustl.edu, or by writing to
561 the FSF at 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
562
563 @node Other C++ compilers?, , What else do I need?, Installation
564 @section Can I compile Octave with another C++ compiler?
565
566 Currently, Octave can only be compiled with the GNU C++ compiler. It
567 would be nice to make it possible to compile Octave with other C++
568 compilers, but the maintainers do not have sufficient time to devote to
569 this. If you are interested in working to make Octave portable to other
570 compilers, please contact bug-octave@@bevo.che.wisc.edu.
571
572 @node Common problems, Getting additional help, Installation, Top
573 @chapter Common problems
574
575 This list is probably far too short. Feel free to suggest additional
576 questions (preferably with answers!)
577
578 @itemize @bullet
579 @item
580 Octave takes a long time to find symbols.
581
582 Octave is probably spending this time recursively searching directories
583 for function files. Check the value of your LOADPATH. For those
584 elements that end in @samp{//}, do any name a very large directory tree?
585 Does it contain directories that have a mixture of files and
586 directories? In order for the recursive directory searching code to
587 work efficiently, directories that are to be searched recursively should
588 have either function files only, or subdirectories only, but not a
589 mixture of both. Check to make sure that Octave's standard set of
590 function files is installed this way.
591 @end itemize
592
593 @node Getting additional help, Bug reports, Common problems, Top
594 @chapter Getting additional help
595
596 @cindex Additional help
597 @cindex Mailing lists, help-octave
598
599 The mailing list
600
601 @example
602 help-octave@@bevo.che.wisc.edu
603 @end example
604
605 @noindent
606 is available for questions related to using, installing, and porting
607 Octave that are not adequately answered by the Octave manual or by this
608 document.
609
610 If you would like to join the discussion and receive all messages sent
611 to the list, please send a short note to
612
613 @example
614 help-octave-request@@bevo.che.wisc.edu
615 ^^^^^^^
616 @end example
617
618 @strong{Please do not} send requests to be added or removed from the the
619 mailing list, or other administrative trivia to the list itself.
620
621 An archive of old postings to the help-octave mailing list is maintained
622 on ftp.che.wisc.edu in the directory @file{/pub/octave/MAILING-LISTS}.
623
624 @node Bug reports, MATLAB compatibility, Getting additional help, Top
625 @chapter I think I have found a bug in Octave.
626
627 @cindex Bug in Octave, newly found
628
629 ``I think I have found a bug in Octave, but I'm not sure. How do I know,
630 and who should I tell?''
631
632 @cindex Manual, for Octave
633
634 First, see the section on bugs and bug reports in the Octave manual.
635 The Octave manual is included in the Octave distribution.
636
637 When you report a bug, make sure to describe the type of computer you
638 are using, the version of the operating system it is running, and the
639 version of Octave that you are using. Also provide enough code so that
640 the Octave maintainers can duplicate your bug.
641
642 If you have Octave working at all, the easiest way to do this is to use
643 the Octave function @code{bug_report}. When you execute this function,
644 Octave will prompt you for a subject and then invoke the editor on a
645 file that already contains all the configuration information. When you
646 exit the editor, Octave will mail the bug report for you.
647
648 @cindex Octave bug report
649 @cindex Mailing lists, bug-octave
650
651 If for some reason you cannot use Octave's @code{bug_report} function,
652 mail your bug report to "bug-octave@@bevo.che.wisc.edu". Your message
653 needs to include enough information to allow the maintainers of Octave
654 to fix the bug. Please read the section on bugs and bug reports in the
655 Octave manual for a list of things that should be included in every bug
656 report.
657
658 @node MATLAB compatibility, Index, Bug reports, Top
659 @chapter Porting programs from @sc{Matlab} to Octave
660
661 @cindex @sc{Matlab} compatibility
662 @cindex Compatibility with @sc{Matlab}
663
664 ``I wrote some code for @sc{Matlab}, and I want to get it running under
665 Octave. Is there anything I should watch out for?''
666
667 The differences between Octave and @sc{Matlab} typically fall into one of
668 three categories:
669
670 @enumerate
671 @item
672 Irrelevant.
673
674 @item
675 Known differences, perhaps configurable with a user preference variable.
676
677 @item
678 Unknown differences.
679 @end enumerate
680
681 The first category, irrelevant differences, do not affect computations
682 and most likely do not affect the execution of function files. Some
683 examples are:
684
685 When typing @samp{help function}, Octave displays the first set of
686 comment lines @emph{after} the function declaration, but @sc{Matlab}
687 the first set of comment lines starting from the beginning of the file.
688
689 The differences of the second category are usually because the authors
690 of Octave decided on a better (subjective) implementation that the way
691 @sc{Matlab} does it, and so introduced ``user preference variables'' so that
692 you can customize Octave's behavior to be either @sc{Matlab}-compatible or
693 to use Octave's new features. To make Octave more @sc{Matlab}-compatible,
694 put the following statements in your @file{~/.octaverc} file. This is a
695 partial list of the user preference variables that should be changed to
696 get @sc{Matlab}-compatible behavior. (It is partial because not all the
697 differences are currently known, and when they become known, this
698 document lags behind.)
699
700 @example
701 PS1 = '>> ';
702 PS2 = '';
703 default_save_format = 'mat-binary';
704 define_all_return_values = 'true';
705 do_fortran_indexing = 'true';
706 empty_list_elements_ok = 'true';
707 implicit_str_to_num_ok = 'true';
708 ok_to_lose_imaginary_part = 'true';
709 page_screen_output = 'false';
710 prefer_column_vectors = 'false';
711 prefer_zero_one_indexing = 'true';
712 print_empty_dimensions = 'false';
713 treat_neg_dim_as_zero = 'true';
714 warn_function_name_clash = 'false';
715 whitespace_in_literal_matrix = 'traditional';
716 @end example
717
718 Some other known differences are:
719
720 @itemize @bullet
721 @item
722 String subscripting is not yet implemented in Octave. For example,
723
724 @example
725 a = 'reknob';
726 a([6,1,5,3,2,4])
727 @end example
728
729 @noindent
730 returns the string @samp{broken} in @sc{Matlab}, but generates an error in
731 Octave. A future release of Octave will fix this along with providing
732 a much more complete and powerful set of functions for manipulating strings.
733
734 @item
735 The Octave plotting functions are mostly compatible with the ones from
736 @sc{Matlab} 3.x, but not from @sc{Matlab} 4.x.
737
738 @item
739 The C-style I/O functions are not completely compatible. It would be
740 useful for someone to explore the differences so that they might be
741 fixed, or at least noted in the manual.
742 @end itemize
743
744 The third category of differences is (hopefully) shrinking. If you find
745 a difference between Octave behavior and @sc{Matlab}, then you should send a
746 description of this difference (with code illustrating the difference,
747 if possible) to bug-octave@@bevo.che.wisc.edu.
748
749 An archive of old postings to the Octave mailing lists is maintained
750 on ftp.che.wisc.edu in the directory @file{/pub/octave/MAILING-LISTS}.
751
752 @node Index, , MATLAB compatibility, Top
753 @appendix Concept Index
754
755 @printindex cp
756
757 @page
758 @contents
759 @bye