#! /bin/sh # # To apply this patch, cd to the top level Octave source directory and # run this file through /bin/sh. It will first remove any files that # have been deleted from the source distribution since the last # release and then update the sources with patch(1). # # Diffs for updating *.ps, *.dvi, *.info*, and *.html files are not # included because they can be recreated from the Texinfo files using # TeX, makeinfo, or texi2html. # # Diffs for updating parse.cc and y.tab.h are not included because # they can be recreated from the file parse.y using bison. # # Diffs for updating lex.cc are not included because it can be # recreated from lex.l using flex. # # John W. Eaton # jwe@bevo.che.wisc.edu # University of Wisconsin-Madison # Department of Chemical Engineering if test -f src/octave.cc ; then true else echo '***********************************************************' 1>&2 echo 'You must run this script in the top-level octave directory!' 1>&2 echo '***********************************************************' 1>&2 exit 1 fi ### ### Special commands should go here. ### echo 'patching existing files' patch -p1 << \PATCH_EOF diff -cNr octave-3.0.2/BUGS octave-3.0.3/BUGS *** octave-3.0.2/BUGS 2008-08-20 07:51:13.000000000 +0200 --- octave-3.0.3/BUGS 2008-10-03 10:27:15.000000000 +0200 *************** *** 124,130 **** 1.5 How to Report Bugs ====================== ! Send bug reports for Octave to one of the addresses listed in *Note Bug Lists::. The fundamental principle of reporting bugs usefully is this: --- 124,130 ---- 1.5 How to Report Bugs ====================== ! Send bug reports for Octave to one of the addresses listed in *note Bug Lists::. The fundamental principle of reporting bugs usefully is this: diff -cNr octave-3.0.2/ChangeLog octave-3.0.3/ChangeLog *** octave-3.0.2/ChangeLog 2008-08-20 07:28:21.000000000 +0200 --- octave-3.0.3/ChangeLog 2008-09-29 08:03:11.000000000 +0200 *************** *** 1,3 **** --- 1,7 ---- + 2008-09-24 Jaroslav Hajek + + Version 3.0.3 released. + 2008-08-19 Jaroslav Hajek Version 3.0.2 released. diff -cNr octave-3.0.2/doc/ChangeLog octave-3.0.3/doc/ChangeLog *** octave-3.0.2/doc/ChangeLog 2008-08-20 07:28:21.000000000 +0200 --- octave-3.0.3/doc/ChangeLog 2008-09-29 08:03:11.000000000 +0200 *************** *** 1,3 **** --- 1,18 ---- + 2008-09-24 Jaroslav Hajek + + Version 3.0.3 released. + + 2008-09-23 Francesco Potorti` . + + * interpreter/container.txi: Fix cross reference in struct docs. + + 2008-07-28 David Bateman + + * interpreter/plot.txi: Document contourf. + + * interpreter/plot.txi: Clarify the description of OuterPosition + axes property. + 2008-08-14 Jaroslav Hajek Version 3.0.2 released. diff -cNr octave-3.0.2/doc/conf.texi octave-3.0.3/doc/conf.texi *** octave-3.0.2/doc/conf.texi 2008-08-14 13:42:07.000000000 +0200 --- octave-3.0.3/doc/conf.texi 2008-09-24 10:31:16.000000000 +0200 *************** *** 18,26 **** @set OCTAVE_MANUAL @set top_srcdir .. ! @set abs_top_srcdir /home/hajek/devel/octave/release-3-0-x @set OCTAVEHOME /usr/local ! @set VERSION 3.0.2 @set HAVE_COLAMD @set HAVE_CHOLMOD @set HAVE_UMFPACK --- 18,26 ---- @set OCTAVE_MANUAL @set top_srcdir .. ! @set abs_top_srcdir /home/hajek/devel/octave/release-3-0-x-build @set OCTAVEHOME /usr/local ! @set VERSION 3.0.3 @set HAVE_COLAMD @set HAVE_CHOLMOD @set HAVE_UMFPACK Files octave-3.0.2/doc/faq/Octave-FAQ.pdf and octave-3.0.3/doc/faq/Octave-FAQ.pdf differ diff -cNr octave-3.0.2/doc/interpreter/container.texi octave-3.0.3/doc/interpreter/container.texi *** octave-3.0.2/doc/interpreter/container.texi 2008-08-20 07:51:17.000000000 +0200 --- octave-3.0.3/doc/interpreter/container.texi 2008-10-03 12:17:33.000000000 +0200 *************** *** 216,222 **** It is also possible to cycle through all the elements of a structure in a loop, using a special form of the @code{for} statement ! (@pxref{The for Statement}) @menu * Structure Arrays:: --- 216,222 ---- It is also possible to cycle through all the elements of a structure in a loop, using a special form of the @code{for} statement ! (@pxref{Looping Over Structure Elements}) @menu * Structure Arrays:: *************** *** 521,527 **** @subsection Processing Data in Structures The simplest way to process data in a structure is within a @code{for} ! loop or othe means of iterating over the fields. A similar effect can be achieved with the @code{structfun} function, where a user defined function is applied to each field of the structure. --- 521,527 ---- @subsection Processing Data in Structures The simplest way to process data in a structure is within a @code{for} ! loop (@pxref{Looping Over Structure Elements}). A similar effect can be achieved with the @code{structfun} function, where a user defined function is applied to each field of the structure. *************** *** 745,752 **** @anchor{doc-num2cell} @deftypefn {Loadable Function} {@var{c} =} num2cell (@var{m}) ! @deftypefnx {Loadable Function} {@var{c} =} num2cell (@var{m}, @var{d}) ! Convert to matrix @var{m} into a cell array. If @var{d} is defined the value @var{c} is of dimension 1 in this dimension and the elements of @var{m} are placed in slices in @var{c}. @seealso{mat2cell} --- 745,752 ---- @anchor{doc-num2cell} @deftypefn {Loadable Function} {@var{c} =} num2cell (@var{m}) ! @deftypefnx {Loadable Function} {@var{c} =} num2cell (@var{m}, @var{dim}) ! Convert the matrix @var{m} into a cell array. If @var{dim} is defined, the value @var{c} is of dimension 1 in this dimension and the elements of @var{m} are placed in slices in @var{c}. @seealso{mat2cell} *************** *** 757,763 **** @deftypefn {Loadable Function} {@var{b} =} mat2cell (@var{a}, @var{m}, @var{n}) @deftypefnx {Loadable Function} {@var{b} =} mat2cell (@var{a}, @var{d1}, @var{d2}, @dots{}) @deftypefnx {Loadable Function} {@var{b} =} mat2cell (@var{a}, @var{r}) ! Converts the matrix @var{a} to a cell array If @var{a} is 2-D, then it is required that @code{sum (@var{m}) == size (@var{a}, 1)} and @code{sum (@var{n}) == size (@var{a}, 2)}. Similarly, if @var{a} is a multi-dimensional and the number of dimensional arguments is equal --- 757,763 ---- @deftypefn {Loadable Function} {@var{b} =} mat2cell (@var{a}, @var{m}, @var{n}) @deftypefnx {Loadable Function} {@var{b} =} mat2cell (@var{a}, @var{d1}, @var{d2}, @dots{}) @deftypefnx {Loadable Function} {@var{b} =} mat2cell (@var{a}, @var{r}) ! Convert the matrix @var{a} to a cell array. If @var{a} is 2-D, then it is required that @code{sum (@var{m}) == size (@var{a}, 1)} and @code{sum (@var{n}) == size (@var{a}, 2)}. Similarly, if @var{a} is a multi-dimensional and the number of dimensional arguments is equal *************** *** 1087,1093 **** @noindent where @code{@var{i}, @var{j}} is equally a comma separated list. Comma separated lists can not be directly manipulated by the user. However, ! both structures are cell arrays can be converted into comma separated lists, which makes them useful to keep the input arguments and return values of functions organized. Another example of where a comma separated list can be used is in the creation of a new array. If all the --- 1087,1093 ---- @noindent where @code{@var{i}, @var{j}} is equally a comma separated list. Comma separated lists can not be directly manipulated by the user. However, ! both structures and cell arrays can be converted into comma separated lists, which makes them useful to keep the input arguments and return values of functions organized. Another example of where a comma separated list can be used is in the creation of a new array. If all the diff -cNr octave-3.0.2/doc/interpreter/container.txi octave-3.0.3/doc/interpreter/container.txi *** octave-3.0.2/doc/interpreter/container.txi 2008-08-01 08:32:26.000000000 +0200 --- octave-3.0.3/doc/interpreter/container.txi 2008-09-24 09:13:46.000000000 +0200 *************** *** 208,214 **** It is also possible to cycle through all the elements of a structure in a loop, using a special form of the @code{for} statement ! (@pxref{The for Statement}) @menu * Structure Arrays:: --- 208,214 ---- It is also possible to cycle through all the elements of a structure in a loop, using a special form of the @code{for} statement ! (@pxref{Looping Over Structure Elements}) @menu * Structure Arrays:: *************** *** 418,424 **** @subsection Processing Data in Structures The simplest way to process data in a structure is within a @code{for} ! loop or othe means of iterating over the fields. A similar effect can be achieved with the @code{structfun} function, where a user defined function is applied to each field of the structure. --- 418,424 ---- @subsection Processing Data in Structures The simplest way to process data in a structure is within a @code{for} ! loop (@pxref{Looping Over Structure Elements}). A similar effect can be achieved with the @code{structfun} function, where a user defined function is applied to each field of the structure. *************** *** 717,723 **** @noindent where @code{@var{i}, @var{j}} is equally a comma separated list. Comma separated lists can not be directly manipulated by the user. However, ! both structures are cell arrays can be converted into comma separated lists, which makes them useful to keep the input arguments and return values of functions organized. Another example of where a comma separated list can be used is in the creation of a new array. If all the --- 717,723 ---- @noindent where @code{@var{i}, @var{j}} is equally a comma separated list. Comma separated lists can not be directly manipulated by the user. However, ! both structures and cell arrays can be converted into comma separated lists, which makes them useful to keep the input arguments and return values of functions organized. Another example of where a comma separated list can be used is in the creation of a new array. If all the diff -cNr octave-3.0.2/doc/interpreter/contributors.in octave-3.0.3/doc/interpreter/contributors.in *** octave-3.0.2/doc/interpreter/contributors.in 2008-08-01 08:50:55.000000000 +0200 --- octave-3.0.3/doc/interpreter/contributors.in 2008-09-24 09:13:46.000000000 +0200 *************** *** 188,193 **** --- 188,194 ---- Ariel Tankus Georg Thimm Duncan Temple Lang + Kris Thielemans Olaf Till Thomas Treichl Utkarsh Upadhyay diff -cNr octave-3.0.2/doc/interpreter/contributors.texi octave-3.0.3/doc/interpreter/contributors.texi *** octave-3.0.2/doc/interpreter/contributors.texi 2008-08-20 07:51:22.000000000 +0200 --- octave-3.0.3/doc/interpreter/contributors.texi 2008-10-03 12:17:37.000000000 +0200 *************** *** 62,72 **** @item Quentin H. Spencer @tab Christoph Spiel @tab Richard Stallman @item Russell Standish @tab Doug Stewart @tab Thomas Stuart @item John Swensen @tab Ariel Tankus @tab Georg Thimm ! @item Duncan Temple Lang @tab Olaf Till @tab Thomas Treichl ! @item Utkarsh Upadhyay @tab Stefan van der Walt @tab Peter Van Wieren ! @item James R. Van Zandt @tab Gregory Vanuxem @tab Ivana Varekova ! @item Thomas Walter @tab Olaf Weber @tab Thomas Weber ! @item Bob Weigel @tab Andreas Weingessel @tab Michael Weitzel ! @item Fook Fah Yap @tab Michael Zeising @tab Federico Zenith ! @item Alex Zvoleff @end multitable --- 62,72 ---- @item Quentin H. Spencer @tab Christoph Spiel @tab Richard Stallman @item Russell Standish @tab Doug Stewart @tab Thomas Stuart @item John Swensen @tab Ariel Tankus @tab Georg Thimm ! @item Duncan Temple Lang @tab Kris Thielemans @tab Olaf Till ! @item Thomas Treichl @tab Utkarsh Upadhyay @tab Stefan van der Walt ! @item Peter Van Wieren @tab James R. Van Zandt @tab Gregory Vanuxem ! @item Ivana Varekova @tab Thomas Walter @tab Olaf Weber ! @item Thomas Weber @tab Bob Weigel @tab Andreas Weingessel ! @item Michael Weitzel @tab Fook Fah Yap @tab Michael Zeising ! @item Federico Zenith @tab Alex Zvoleff @end multitable diff -cNr octave-3.0.2/doc/interpreter/convhull.eps octave-3.0.3/doc/interpreter/convhull.eps *** octave-3.0.2/doc/interpreter/convhull.eps 2008-08-14 13:43:10.000000000 +0200 --- octave-3.0.3/doc/interpreter/convhull.eps 2008-09-24 10:32:13.000000000 +0200 *************** *** 1,7 **** %!PS-Adobe-2.0 EPSF-2.0 %%Title: convhull.eps %%Creator: gnuplot 4.2 patchlevel 3 ! %%CreationDate: Thu Aug 14 13:43:11 2008 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments --- 1,7 ---- %!PS-Adobe-2.0 EPSF-2.0 %%Title: convhull.eps %%Creator: gnuplot 4.2 patchlevel 3 ! %%CreationDate: Wed Sep 24 10:32:13 2008 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments *************** *** 48,59 **** /Author (Jaroslav Hajek) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Thu Aug 14 13:43:11 2008) /DOCINFO pdfmark end } ifelse % ! % Gnuplot Prolog Version 4.2 (August 2006) % /M {moveto} bind def /L {lineto} bind def --- 48,59 ---- /Author (Jaroslav Hajek) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Wed Sep 24 10:32:13 2008) /DOCINFO pdfmark end } ifelse % ! % Gnuplot Prolog Version 4.2 (November 2007) % /M {moveto} bind def /L {lineto} bind def *************** *** 63,68 **** --- 63,69 ---- /Z {closepath} bind def /C {setrgbcolor} bind def /f {rlineto fill} bind def + /Gshow {show} def % May be redefined later in the file to support UTF-8 /vpt2 vpt 2 mul def /hpt2 hpt 2 mul def /Lshow {currentpoint stroke M 0 vshift R *************** *** 425,441 **** { 5 get 3 eq {gsave} {grestore} ifelse } {dup dup 0 get findfont exch 1 get scalefont setfont [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 ! get exch 4 get {show} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop pop aload pop M} ifelse }ifelse }ifelse } ifelse } ! forall} bind def /MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont ! 6 get stringwidth pop add} {pop} ifelse} ifelse} forall} bind def /MLshow { currentpoint stroke M 0 exch R Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def --- 426,443 ---- { 5 get 3 eq {gsave} {grestore} ifelse } {dup dup 0 get findfont exch 1 get scalefont setfont [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 ! get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop pop aload pop M} ifelse }ifelse }ifelse } ifelse } ! forall} def ! /Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def /MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont ! 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def /MLshow { currentpoint stroke M 0 exch R Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def Files octave-3.0.2/doc/interpreter/convhull.pdf and octave-3.0.3/doc/interpreter/convhull.pdf differ diff -cNr octave-3.0.2/doc/interpreter/data.texi octave-3.0.3/doc/interpreter/data.texi *** octave-3.0.2/doc/interpreter/data.texi 2008-08-20 07:51:17.000000000 +0200 --- octave-3.0.3/doc/interpreter/data.texi 2008-10-03 12:17:33.000000000 +0200 *************** *** 86,92 **** @anchor{doc-typecast} @deftypefn {Loadable Function} {} typecast (@var{x}, @var{type}) ! Converts from one datatype to another without changing the underlying data. The argument @var{type} defines the type of the return argument and must be one of 'uint8', 'uint16', 'uint32', 'uint64', 'int8', 'int16', 'int32', 'int64', 'single' or 'double'. --- 86,92 ---- @anchor{doc-typecast} @deftypefn {Loadable Function} {} typecast (@var{x}, @var{type}) ! Convert from one datatype to another without changing the underlying data. The argument @var{type} defines the type of the return argument and must be one of 'uint8', 'uint16', 'uint32', 'uint64', 'int8', 'int16', 'int32', 'int64', 'single' or 'double'. diff -cNr octave-3.0.2/doc/interpreter/delaunay.eps octave-3.0.3/doc/interpreter/delaunay.eps *** octave-3.0.2/doc/interpreter/delaunay.eps 2008-08-14 13:43:12.000000000 +0200 --- octave-3.0.3/doc/interpreter/delaunay.eps 2008-09-24 10:32:15.000000000 +0200 *************** *** 1,7 **** %!PS-Adobe-2.0 EPSF-2.0 %%Title: delaunay.eps %%Creator: gnuplot 4.2 patchlevel 3 ! %%CreationDate: Thu Aug 14 13:43:13 2008 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments --- 1,7 ---- %!PS-Adobe-2.0 EPSF-2.0 %%Title: delaunay.eps %%Creator: gnuplot 4.2 patchlevel 3 ! %%CreationDate: Wed Sep 24 10:32:15 2008 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments *************** *** 48,59 **** /Author (Jaroslav Hajek) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Thu Aug 14 13:43:13 2008) /DOCINFO pdfmark end } ifelse % ! % Gnuplot Prolog Version 4.2 (August 2006) % /M {moveto} bind def /L {lineto} bind def --- 48,59 ---- /Author (Jaroslav Hajek) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Wed Sep 24 10:32:15 2008) /DOCINFO pdfmark end } ifelse % ! % Gnuplot Prolog Version 4.2 (November 2007) % /M {moveto} bind def /L {lineto} bind def *************** *** 63,68 **** --- 63,69 ---- /Z {closepath} bind def /C {setrgbcolor} bind def /f {rlineto fill} bind def + /Gshow {show} def % May be redefined later in the file to support UTF-8 /vpt2 vpt 2 mul def /hpt2 hpt 2 mul def /Lshow {currentpoint stroke M 0 vshift R *************** *** 425,441 **** { 5 get 3 eq {gsave} {grestore} ifelse } {dup dup 0 get findfont exch 1 get scalefont setfont [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 ! get exch 4 get {show} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop pop aload pop M} ifelse }ifelse }ifelse } ifelse } ! forall} bind def /MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont ! 6 get stringwidth pop add} {pop} ifelse} ifelse} forall} bind def /MLshow { currentpoint stroke M 0 exch R Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def --- 426,443 ---- { 5 get 3 eq {gsave} {grestore} ifelse } {dup dup 0 get findfont exch 1 get scalefont setfont [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 ! get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop pop aload pop M} ifelse }ifelse }ifelse } ifelse } ! forall} def ! /Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def /MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont ! 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def /MLshow { currentpoint stroke M 0 exch R Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def Files octave-3.0.2/doc/interpreter/delaunay.pdf and octave-3.0.3/doc/interpreter/delaunay.pdf differ diff -cNr octave-3.0.2/doc/interpreter/dynamic.texi octave-3.0.3/doc/interpreter/dynamic.texi *** octave-3.0.2/doc/interpreter/dynamic.texi 2008-08-20 07:51:17.000000000 +0200 --- octave-3.0.3/doc/interpreter/dynamic.texi 2008-10-03 12:17:33.000000000 +0200 *************** *** 1733,1760 **** following C++ program, uses class Matrix from liboctave.a or liboctave.so. ! @example ! @group ! #include ! #include ! int ! main (void) ! @{ ! std::cout << "Hello Octave world!\n"; ! int n = 2; ! Matrix a_matrix = Matrix (n, n); ! for (octave_idx_type i = 0; i < n; i++) ! @{ ! for (octave_idx_type j = 0; j < n; j++) ! @{ ! a_matrix (i, j) = (i + 1) * 10 + (j + 1); ! @} ! @} ! std::cout << a_matrix; ! return 0; ! @} ! @end group ! @end example @noindent mkoctfile can then be used to build a standalone application with a --- 1733,1739 ---- following C++ program, uses class Matrix from liboctave.a or liboctave.so. ! @examplefile{standalone.cc} @noindent mkoctfile can then be used to build a standalone application with a *************** *** 1762,1769 **** @example @group ! $ mkoctfile --link-stand-alone hello.cc -o hello ! $ ./hello Hello Octave world! 11 12 21 22 --- 1741,1748 ---- @example @group ! $ mkoctfile --link-stand-alone standalone.cc -o standalone ! $ ./standalone Hello Octave world! 11 12 21 22 *************** *** 1772,1775 **** @end example Note that the application @code{hello} will be dynamically linked ! against the octave libraries and any octave support libraries. --- 1751,1774 ---- @end example Note that the application @code{hello} will be dynamically linked ! against the octave libraries and any octave support libraries. The above ! allows the Octave math libraries to be used by an application. It does ! not however allow the script files, oct-files or builtin functions of ! Octave to be used by the application. To do that the Octave interpreter ! needs to be initialized first. An example of how to do this can then be ! seen in the code ! ! @examplefile{embedded.cc} ! ! @noindent ! which is compiled and run as before as a standalone application with ! ! @example ! @group ! $ mkoctfile --link-stand-alone embedded.cc -o embedded ! $ ./embedded ! GCD of [10, 15] is 5 ! $ ! @end group ! @end example ! diff -cNr octave-3.0.2/doc/interpreter/dynamic.txi octave-3.0.3/doc/interpreter/dynamic.txi *** octave-3.0.2/doc/interpreter/dynamic.txi 2008-08-01 08:50:55.000000000 +0200 --- octave-3.0.3/doc/interpreter/dynamic.txi 2008-09-24 09:13:46.000000000 +0200 *************** *** 1621,1648 **** following C++ program, uses class Matrix from liboctave.a or liboctave.so. ! @example ! @group ! #include ! #include ! int ! main (void) ! @{ ! std::cout << "Hello Octave world!\n"; ! int n = 2; ! Matrix a_matrix = Matrix (n, n); ! for (octave_idx_type i = 0; i < n; i++) ! @{ ! for (octave_idx_type j = 0; j < n; j++) ! @{ ! a_matrix (i, j) = (i + 1) * 10 + (j + 1); ! @} ! @} ! std::cout << a_matrix; ! return 0; ! @} ! @end group ! @end example @noindent mkoctfile can then be used to build a standalone application with a --- 1621,1627 ---- following C++ program, uses class Matrix from liboctave.a or liboctave.so. ! @examplefile{standalone.cc} @noindent mkoctfile can then be used to build a standalone application with a *************** *** 1650,1657 **** @example @group ! $ mkoctfile --link-stand-alone hello.cc -o hello ! $ ./hello Hello Octave world! 11 12 21 22 --- 1629,1636 ---- @example @group ! $ mkoctfile --link-stand-alone standalone.cc -o standalone ! $ ./standalone Hello Octave world! 11 12 21 22 *************** *** 1660,1663 **** @end example Note that the application @code{hello} will be dynamically linked ! against the octave libraries and any octave support libraries. --- 1639,1662 ---- @end example Note that the application @code{hello} will be dynamically linked ! against the octave libraries and any octave support libraries. The above ! allows the Octave math libraries to be used by an application. It does ! not however allow the script files, oct-files or builtin functions of ! Octave to be used by the application. To do that the Octave interpreter ! needs to be initialized first. An example of how to do this can then be ! seen in the code ! ! @examplefile{embedded.cc} ! ! @noindent ! which is compiled and run as before as a standalone application with ! ! @example ! @group ! $ mkoctfile --link-stand-alone embedded.cc -o embedded ! $ ./embedded ! GCD of [10, 15] is 5 ! $ ! @end group ! @end example ! diff -cNr octave-3.0.2/doc/interpreter/errorbar.eps octave-3.0.3/doc/interpreter/errorbar.eps *** octave-3.0.2/doc/interpreter/errorbar.eps 2008-08-14 13:43:21.000000000 +0200 --- octave-3.0.3/doc/interpreter/errorbar.eps 2008-09-24 10:32:22.000000000 +0200 *************** *** 1,7 **** %!PS-Adobe-2.0 EPSF-2.0 %%Title: errorbar.eps %%Creator: gnuplot 4.2 patchlevel 3 ! %%CreationDate: Thu Aug 14 13:43:21 2008 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments --- 1,7 ---- %!PS-Adobe-2.0 EPSF-2.0 %%Title: errorbar.eps %%Creator: gnuplot 4.2 patchlevel 3 ! %%CreationDate: Wed Sep 24 10:32:22 2008 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments *************** *** 48,59 **** /Author (Jaroslav Hajek) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Thu Aug 14 13:43:21 2008) /DOCINFO pdfmark end } ifelse % ! % Gnuplot Prolog Version 4.2 (August 2006) % /M {moveto} bind def /L {lineto} bind def --- 48,59 ---- /Author (Jaroslav Hajek) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Wed Sep 24 10:32:22 2008) /DOCINFO pdfmark end } ifelse % ! % Gnuplot Prolog Version 4.2 (November 2007) % /M {moveto} bind def /L {lineto} bind def *************** *** 63,68 **** --- 63,69 ---- /Z {closepath} bind def /C {setrgbcolor} bind def /f {rlineto fill} bind def + /Gshow {show} def % May be redefined later in the file to support UTF-8 /vpt2 vpt 2 mul def /hpt2 hpt 2 mul def /Lshow {currentpoint stroke M 0 vshift R *************** *** 425,441 **** { 5 get 3 eq {gsave} {grestore} ifelse } {dup dup 0 get findfont exch 1 get scalefont setfont [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 ! get exch 4 get {show} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop pop aload pop M} ifelse }ifelse }ifelse } ifelse } ! forall} bind def /MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont ! 6 get stringwidth pop add} {pop} ifelse} ifelse} forall} bind def /MLshow { currentpoint stroke M 0 exch R Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def --- 426,443 ---- { 5 get 3 eq {gsave} {grestore} ifelse } {dup dup 0 get findfont exch 1 get scalefont setfont [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 ! get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop pop aload pop M} ifelse }ifelse }ifelse } ifelse } ! forall} def ! /Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def /MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont ! 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def /MLshow { currentpoint stroke M 0 exch R Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def *************** *** 656,1236 **** 1.000 UP 0.500 UL LT0 ! 0.00 0.00 1.00 C 574 2272 M ! 0 -171 V ! -31 171 R 62 0 V ! 543 2101 M 62 0 V ! 33 827 R ! 0 -496 V ! -31 496 R 62 0 V ! 607 2432 M 62 0 V ! 33 861 R ! 0 -196 V ! -31 196 R 62 0 V ! 671 3097 M 62 0 V ! 33 158 R ! 0 24 V ! -31 -24 R 62 0 V ! -62 24 R 62 0 V ! 33 -29 R ! 0 112 V ! 799 3250 M 62 0 V ! -62 112 R 62 0 V ! 32 181 R ! 0 -253 V ! -31 253 R 62 0 V ! 862 3290 M 62 0 V ! 33 896 R ! 0 -792 V ! -31 792 R 62 0 V ! 926 3394 M 62 0 V ! 33 983 R ! 0 37 V ! -31 -37 R 62 0 V ! -62 37 R 62 0 V ! 33 -184 R ! 0 84 V ! -31 -84 R 62 0 V ! -62 84 R 62 0 V ! 33 -102 R 0 237 V -31 -237 R 62 0 V -62 237 R 62 0 V ! 33 109 R ! 0 211 V ! -31 -211 R 62 0 V ! -62 211 R 62 0 V ! 33 -275 R ! 0 241 V ! -31 -241 R 62 0 V ! -62 241 R 62 0 V ! 33 -239 R ! 0 156 V ! -31 -156 R 62 0 V ! -62 156 R 62 0 V ! 32 166 R ! 0 54 V ! -31 -54 R 62 0 V ! -62 54 R 62 0 V 33 0 R 0 -15 V -31 15 R 62 0 V -62 -15 R 62 0 V ! 225 -69 R ! 0 45 V ! -31 -45 R 62 0 V ! -62 45 R 62 0 V ! 33 -398 R ! 0 318 V ! -31 -318 R 62 0 V ! -62 318 R 62 0 V ! 33 -255 R ! 0 195 V ! -31 -195 R ! 1883 4498 L ! -62 195 R 62 0 V ! 32 -156 R ! 0 335 V ! -31 -335 R 62 0 V ! -62 335 R 62 0 V ! 33 -487 R ! 0 -353 V ! -31 353 R 62 0 V ! -62 -353 R 62 0 V ! 33 -38 R ! 0 128 V ! -31 -128 R 62 0 V ! -62 128 R 62 0 V ! 33 244 R ! 0 -86 V ! -31 86 R 62 0 V ! -62 -86 R 62 0 V ! 33 -579 R ! 0 534 V ! -31 -534 R 62 0 V ! -62 534 R 62 0 V ! 33 -493 R ! 0 142 V ! -31 -142 R 62 0 V ! -62 142 R 62 0 V ! 33 -779 R ! 0 235 V ! -31 -235 R 62 0 V ! -62 235 R 62 0 V ! 33 248 R ! 0 266 V ! -31 -266 R 62 0 V ! -62 266 R 62 0 V ! 33 -1098 R ! 0 312 V ! -31 -312 R 62 0 V ! -62 312 R 62 0 V ! 32 -415 R ! 0 298 V ! -31 -298 R 62 0 V ! -62 298 R 62 0 V ! 33 -495 R ! 0 145 V ! -31 -145 R 62 0 V ! -62 145 R 62 0 V ! 33 61 R ! 0 -49 V ! -31 49 R 62 0 V ! -62 -49 R 62 0 V ! 33 -207 R ! 0 -384 V ! -31 384 R 62 0 V ! -62 -384 R 62 0 V ! 33 -29 R ! 0 19 V ! -31 -19 R 62 0 V ! -62 19 R 62 0 V ! 33 -193 R ! 0 262 V ! -31 -262 R 62 0 V ! -62 262 R 62 0 V ! 33 -592 R ! 0 198 V ! -31 -198 R 62 0 V ! -62 198 R 62 0 V ! 33 -152 R ! 0 -238 V ! -31 238 R 62 0 V ! -62 -238 R 62 0 V ! 32 -644 R ! 3001 937 L ! 2970 653 M 62 0 V ! -62 284 R 62 0 V ! 33 -47 R ! 0 285 V ! 3034 890 M 62 0 V ! -62 285 R 62 0 V ! 33 -631 R ! 0 339 V ! 3098 544 M 62 0 V ! -62 339 R 62 0 V ! 33 -351 R ! 0 467 V ! 3162 532 M 62 0 V ! -62 467 R 62 0 V ! 33 -719 R ! 0 776 V ! 3226 280 M 62 0 V ! -62 776 R 62 0 V ! 33 -600 R ! 0 64 V ! -31 -64 R 62 0 V ! -62 64 R 62 0 V ! 33 -92 R ! 0 -28 V ! -31 28 R 62 0 V ! -62 -28 R 62 0 V ! 33 -120 R ! 0 351 V ! 3418 280 M 62 0 V ! -62 351 R 62 0 V ! 32 -102 R ! 0 -14 V ! -31 14 R 62 0 V ! -62 -14 R 62 0 V ! 97 -235 R ! 0 121 V ! 3609 280 M 62 0 V ! -62 121 R 62 0 V ! 33 114 R ! 0 -235 V ! -31 235 R 62 0 V ! 3673 280 M 62 0 V ! 33 134 R ! 0 -82 V ! -31 82 R 62 0 V ! -62 -82 R 62 0 V ! 33 -8 R ! 0 43 V ! -31 -43 R 62 0 V ! -62 43 R 62 0 V ! 33 144 R ! 0 -4 V ! -31 4 R 62 0 V ! -62 -4 R 62 0 V ! 33 -227 R ! 0 135 V ! 3929 280 M 62 0 V ! -62 135 R 62 0 V ! 33 651 R ! 0 -660 V ! -31 660 R 62 0 V ! 3993 406 M 62 0 V ! 32 591 R ! 0 -15 V ! -31 15 R 62 0 V ! -62 -15 R 62 0 V ! 33 93 R ! 0 37 V ! -31 -37 R 62 0 V ! -62 37 R ! 4182 1112 L ! 33 208 R ! 0 409 V ! -31 -409 R 62 0 V ! -62 409 R 62 0 V ! 33 -316 R ! 0 -120 V ! -31 120 R 62 0 V ! -62 -120 R 62 0 V ! 33 499 R ! 0 316 V ! -31 -316 R 62 0 V ! -62 316 R 62 0 V ! 33 -304 R ! 0 313 V ! -31 -313 R 62 0 V ! -62 313 R 62 0 V ! 33 -64 R ! 0 87 V ! -31 -87 R 62 0 V ! -62 87 R 62 0 V ! 33 23 R ! 0 261 V ! -31 -261 R 62 0 V ! -62 261 R 62 0 V ! 32 101 R ! 0 -28 V ! -31 28 R 62 0 V ! -62 -28 R 62 0 V ! 33 563 R ! 0 -217 V ! -31 217 R 62 0 V ! -62 -217 R 62 0 V ! 33 413 R ! 0 -435 V ! -31 435 R 62 0 V ! -62 -435 R 62 0 V ! 33 242 R ! 0 696 V ! -31 -696 R 62 0 V ! -62 696 R 62 0 V ! 33 -519 R ! 0 213 V ! -31 -213 R 62 0 V ! -62 213 R 62 0 V ! 33 241 R ! 0 -43 V ! -31 43 R 62 0 V ! -62 -43 R 62 0 V ! 33 550 R ! 0 -330 V ! -31 330 R 62 0 V ! -62 -330 R 62 0 V ! 33 776 R ! 0 -390 V ! -31 390 R 62 0 V ! -62 -390 R 62 0 V ! 32 -197 R ! 0 354 V ! -31 -354 R 62 0 V ! -62 354 R 62 0 V ! 33 106 R ! 0 19 V ! -31 -19 R 62 0 V ! -62 19 R 62 0 V ! 33 -90 R ! 0 -101 V ! -31 101 R ! 62 0 V ! -62 -101 R ! 62 0 V ! 33 503 R ! 0 -126 V ! -31 126 R ! 5332 4851 L ! -62 -126 R ! 62 0 V ! 33 -43 R ! 0 190 V ! -31 -190 R 62 0 V ! -62 190 R 62 0 V ! 33 0 R ! 0 -164 V ! -31 164 R 62 0 V ! -62 -164 R 62 0 V ! 97 -184 R ! 0 348 V ! -31 -348 R 62 0 V ! -62 348 R 62 0 V ! 33 -300 R ! 0 300 V ! -31 -300 R 62 0 V ! -62 300 R 62 0 V ! 32 0 R ! 0 -236 V ! -31 236 R 62 0 V ! -62 -236 R 62 0 V ! 33 -154 R ! 0 390 V ! -31 -390 R 62 0 V ! -62 390 R 62 0 V ! 33 -13 R ! 0 -166 V ! -31 166 R 62 0 V ! -62 -166 R 62 0 V ! 33 -207 R ! 0 100 V ! -31 -100 R 62 0 V ! -62 100 R 62 0 V ! 33 218 R ! 0 -66 V ! -31 66 R 62 0 V ! -62 -66 R 62 0 V ! 33 -271 R ! 0 -29 V ! -31 29 R 62 0 V ! -62 -29 R 62 0 V ! 33 -566 R ! 0 605 V ! -31 -605 R 62 0 V ! -62 605 R 62 0 V ! 33 -796 R ! 0 584 V ! -31 -584 R 62 0 V ! -62 584 R 62 0 V ! 32 -744 R ! 0 718 V ! -31 -718 R 62 0 V ! -62 718 R 62 0 V ! 33 -624 R ! 0 126 V ! -31 -126 R 62 0 V ! -62 126 R 62 0 V ! 33 -386 R ! 0 -412 V ! -31 412 R 62 0 V ! -62 -412 R 62 0 V ! 33 239 R ! 0 -78 V ! -31 78 R 62 0 V ! -62 -78 R 62 0 V ! 33 30 R ! 0 56 V ! -31 -56 R 62 0 V ! -62 56 R 62 0 V ! 33 -49 R ! 6515 3186 L ! -31 -45 R 62 0 V ! -62 45 R 62 0 V ! 33 -827 R ! 0 47 V ! -31 -47 R 62 0 V ! -62 47 R 62 0 V ! 33 -278 R ! 0 -352 V ! -31 352 R 62 0 V ! -62 -352 R 62 0 V ! 32 183 R ! 0 -106 V ! -31 106 R 62 0 V ! -62 -106 R 62 0 V ! 33 315 R ! 0 -483 V ! -31 483 R 62 0 V ! -62 -483 R 62 0 V ! 33 -148 R ! 0 13 V ! -31 -13 R 62 0 V ! -62 13 R 62 0 V ! 33 -175 R ! 0 432 V ! -31 -432 R 62 0 V ! -62 432 R 62 0 V ! 33 -476 R ! 0 -476 V ! -31 476 R 62 0 V ! 6931 855 M 62 0 V 574 2576 Pls 638 2805 Pls --- 658,1250 ---- 1.000 UP 0.500 UL LT0 ! 0.00 0.00 1.00 C 574 2815 M ! 0 -681 V ! -31 681 R 62 0 V ! 543 2134 M 62 0 V ! 33 698 R ! 0 164 V ! 607 2832 M 62 0 V ! -62 164 R 62 0 V ! 33 31 R ! 0 -114 V ! -31 114 R 62 0 V ! 671 2913 M 62 0 V ! 33 47 R ! 0 574 V ! 735 2960 M 62 0 V ! -62 574 R 62 0 V ! 33 -302 R ! 0 -155 V ! -31 155 R 62 0 V ! 799 3077 M 62 0 V ! 32 383 R ! 0 19 V ! -31 -19 R 62 0 V ! -62 19 R 62 0 V ! 33 201 R ! 0 -238 V ! -31 238 R 62 0 V ! 926 3442 M 62 0 V ! 33 403 R ! 0 85 V ! -31 -85 R 62 0 V ! -62 85 R 62 0 V ! 33 912 R ! 0 -276 V ! -31 276 R 62 0 V ! -62 -276 R 62 0 V ! 33 -146 R 0 237 V -31 -237 R 62 0 V -62 237 R 62 0 V ! 33 -271 R ! 0 210 V ! -31 -210 R ! 62 0 V ! -62 210 R ! 62 0 V ! 33 276 R ! 0 -247 V ! -31 247 R 62 0 V ! -62 -247 R 62 0 V ! 33 111 R ! 0 -271 V ! -31 271 R 62 0 V ! -62 -271 R 62 0 V ! 96 407 R ! 0 -45 V ! -31 45 R 62 0 V ! -62 -45 R 62 0 V ! 33 45 R ! 0 -175 V ! -31 175 R 62 0 V ! -62 -175 R ! 62 0 V ! 97 -19 R ! 0 170 V ! -31 -170 R ! 62 0 V ! -62 170 R ! 62 0 V ! 33 -325 R ! 0 349 V ! -31 -349 R ! 62 0 V ! -62 349 R 62 0 V 33 0 R + 0 -28 V + -31 28 R + 1819 4872 L + -62 -28 R + 62 0 V + 33 -138 R 0 -15 V -31 15 R 62 0 V -62 -15 R 62 0 V ! 32 -238 R ! 0 -75 V ! -31 75 R 62 0 V ! -62 -75 R 62 0 V ! 33 273 R ! 0 221 V ! -31 -221 R 62 0 V ! -62 221 R 62 0 V ! 33 -669 R ! 0 480 V ! -31 -480 R 62 0 V ! -62 480 R 62 0 V ! 33 -379 R ! 0 -199 V ! -31 199 R 62 0 V ! -62 -199 R 62 0 V ! 33 -187 R ! 0 -171 V ! -31 171 R 62 0 V ! -62 -171 R 62 0 V ! 33 -32 R ! 0 -279 V ! -31 279 R 62 0 V ! -62 -279 R 62 0 V ! 33 -79 R ! 0 228 V ! -31 -228 R 62 0 V ! -62 228 R 62 0 V ! 33 100 R ! 0 5 V ! -31 -5 R 62 0 V ! -62 5 R 62 0 V ! 33 -508 R ! 0 215 V ! -31 -215 R 62 0 V ! -62 215 R 62 0 V ! 32 -262 R ! 0 -234 V ! -31 234 R 62 0 V ! -62 -234 R 62 0 V ! 33 -614 R ! 0 595 V ! -31 -595 R 62 0 V ! -62 595 R 62 0 V ! 33 -471 R ! 0 182 V ! -31 -182 R 62 0 V ! -62 182 R 62 0 V ! 33 -334 R ! 0 -55 V ! -31 55 R 62 0 V ! -62 -55 R 62 0 V ! 33 -110 R ! 0 -464 V ! -31 464 R 62 0 V ! -62 -464 R 62 0 V ! 33 125 R ! 0 218 V ! -31 -218 R 62 0 V ! -62 218 R 62 0 V ! 33 -101 R ! 0 -374 V ! -31 374 R 62 0 V ! -62 -374 R 62 0 V ! 33 -130 R ! 2938 1598 L ! -31 -230 R 62 0 V ! -62 230 R 62 0 V ! 32 -268 R ! 0 -102 V ! -31 102 R 62 0 V ! -62 -102 R 62 0 V ! 33 -420 R ! 0 729 V ! 3034 808 M 62 0 V ! -62 729 R 62 0 V ! 33 -535 R ! 0 219 V ! -31 -219 R 62 0 V ! -62 219 R 62 0 V ! 33 -851 R ! 0 293 V ! 3162 370 M 62 0 V ! -62 293 R 62 0 V ! 33 -176 R ! 0 66 V ! -31 -66 R 62 0 V ! -62 66 R 62 0 V ! 33 -12 R ! 0 -261 V ! -31 261 R 62 0 V ! 3290 280 M 62 0 V ! 33 371 R ! 0 -371 V ! -31 371 R 62 0 V ! 3354 280 M 62 0 V ! 33 294 R ! 0 -294 V ! -31 294 R 62 0 V ! 3418 280 M 62 0 V ! 32 0 R ! 0 173 V ! 3481 280 M 62 0 V ! -62 173 R 62 0 V ! 33 -169 R ! 0 250 V ! 3545 284 M 62 0 V ! -62 250 R 62 0 V ! 33 -45 R ! 0 -209 V ! -31 209 R 62 0 V ! 3609 280 M 62 0 V ! 33 0 R ! 0 19 V ! -31 -19 R 62 0 V ! -62 19 R 62 0 V ! 33 -19 R ! 0 36 V ! -31 -36 R 62 0 V ! -62 36 R 62 0 V ! 33 -36 R ! 0 191 V ! 3801 280 M 62 0 V ! -62 191 R 62 0 V ! 33 -104 R ! 0 104 V ! 3865 367 M 62 0 V ! -62 104 R 62 0 V ! 33 101 R ! 0 50 V ! -31 -50 R 62 0 V ! -62 50 R 62 0 V ! 33 -42 R ! 0 611 V ! 3993 580 M 62 0 V ! -62 611 R ! 4055 1191 L ! 32 -378 R ! 0 339 V ! 4056 813 M 62 0 V ! -62 339 R 62 0 V ! 33 -183 R ! 0 254 V ! 4120 969 M 62 0 V ! -62 254 R 62 0 V ! 33 176 R ! 0 -493 V ! -31 493 R 62 0 V ! 4184 906 M 62 0 V ! 33 257 R ! 0 525 V ! -31 -525 R 62 0 V ! -62 525 R 62 0 V ! 33 344 R ! 0 -627 V ! -31 627 R 62 0 V ! -62 -627 R 62 0 V ! 33 546 R ! 0 -620 V ! -31 620 R 62 0 V ! -62 -620 R 62 0 V ! 33 970 R ! 0 158 V ! -31 -158 R 62 0 V ! -62 158 R 62 0 V ! 33 -148 R ! 0 219 V ! -31 -219 R 62 0 V ! -62 219 R 62 0 V ! 32 337 R ! 0 -651 V ! -31 651 R 62 0 V ! -62 -651 R 62 0 V ! 33 936 R ! 0 -232 V ! -31 232 R 62 0 V ! -62 -232 R 62 0 V ! 33 160 R ! 0 74 V ! -31 -74 R 62 0 V ! -62 74 R 62 0 V ! 33 144 R ! 0 98 V ! -31 -98 R 62 0 V ! -62 98 R 62 0 V ! 33 -6 R ! 0 360 V ! -31 -360 R 62 0 V ! -62 360 R 62 0 V ! 33 -287 R ! 0 14 V ! -31 -14 R 62 0 V ! -62 14 R 62 0 V ! 33 262 R ! 0 -264 V ! -31 264 R 62 0 V ! -62 -264 R 62 0 V ! 33 533 R ! 0 13 V ! -31 -13 R 62 0 V ! -62 13 R 62 0 V ! 32 55 R ! 0 425 V ! -31 -425 R 62 0 V ! -62 425 R 62 0 V ! 33 -155 R ! 0 -51 V ! -31 51 R ! 5204 4346 L ! -62 -51 R 62 0 V ! 33 -122 R ! 0 539 V ! -31 -539 R 62 0 V ! -62 539 R 62 0 V ! 33 -20 R ! 0 -337 V ! -31 337 R 62 0 V ! -62 -337 R 62 0 V ! 33 517 R ! 0 -77 V ! -31 77 R 62 0 V ! -62 -77 R 62 0 V ! 33 -86 R ! 0 163 V ! -31 -163 R 62 0 V ! -62 163 R 62 0 V ! 33 -30 R ! 0 -141 V ! -31 141 R 62 0 V ! -62 -141 R 62 0 V ! 33 171 R ! 0 -68 V ! -31 68 R 62 0 V ! -62 -68 R 62 0 V ! 33 -145 R ! 0 102 V ! -31 -102 R 62 0 V ! -62 102 R 62 0 V ! 96 -99 R ! 0 210 V ! -31 -210 R 62 0 V ! -62 210 R 62 0 V ! 33 -143 R ! 0 76 V ! -31 -76 R 62 0 V ! -62 76 R 62 0 V ! 33 -142 R ! 0 -46 V ! -31 46 R 62 0 V ! -62 -46 R 62 0 V ! 33 -125 R ! 0 -164 V ! -31 164 R 62 0 V ! -62 -164 R 62 0 V ! 33 -167 R ! 0 276 V ! -31 -276 R 62 0 V ! -62 276 R 62 0 V ! 33 -366 R ! 0 187 V ! -31 -187 R 62 0 V ! -62 187 R 62 0 V ! 33 35 R ! 0 -504 V ! -31 504 R 62 0 V ! -62 -504 R 62 0 V ! 32 23 R ! 0 -50 V ! -31 50 R 62 0 V ! -62 -50 R 62 0 V ! 33 -92 R ! 0 499 V ! -31 -499 R 62 0 V ! -62 499 R 62 0 V ! 33 -601 R ! 0 44 V ! -31 -44 R 62 0 V ! -62 44 R 62 0 V ! 33 -245 R ! 6387 3201 L ! -31 166 R 62 0 V ! -62 -166 R 62 0 V ! 33 197 R ! 0 -399 V ! -31 399 R 62 0 V ! -62 -399 R 62 0 V ! 33 131 R ! 0 221 V ! -31 -221 R 62 0 V ! -62 221 R 62 0 V ! 33 -1010 R ! 0 205 V ! -31 -205 R 62 0 V ! -62 205 R 62 0 V ! 33 29 R ! 0 -254 V ! -31 254 R 62 0 V ! -62 -254 R 62 0 V ! 32 130 R ! 0 -468 V ! -31 468 R 62 0 V ! -62 -468 R 62 0 V ! 33 -333 R ! 0 -87 V ! -31 87 R 62 0 V ! -62 -87 R 62 0 V ! 33 -272 R ! 0 541 V ! -31 -541 R 62 0 V ! -62 541 R 62 0 V ! 33 -282 R ! 0 330 V ! -31 -330 R 62 0 V ! -62 330 R 62 0 V ! 33 -658 R ! 0 134 V ! -31 -134 R 62 0 V ! -62 134 R 62 0 V 574 2576 Pls 638 2805 Pls Files octave-3.0.2/doc/interpreter/errorbar.pdf and octave-3.0.3/doc/interpreter/errorbar.pdf differ Files octave-3.0.2/doc/interpreter/errorbar.png and octave-3.0.3/doc/interpreter/errorbar.png differ diff -cNr octave-3.0.2/doc/interpreter/extended.eps octave-3.0.3/doc/interpreter/extended.eps *** octave-3.0.2/doc/interpreter/extended.eps 2008-08-14 13:43:29.000000000 +0200 --- octave-3.0.3/doc/interpreter/extended.eps 2008-09-24 10:32:30.000000000 +0200 *************** *** 1,7 **** %!PS-Adobe-2.0 EPSF-2.0 %%Title: extended.eps %%Creator: gnuplot 4.2 patchlevel 3 ! %%CreationDate: Thu Aug 14 13:43:30 2008 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments --- 1,7 ---- %!PS-Adobe-2.0 EPSF-2.0 %%Title: extended.eps %%Creator: gnuplot 4.2 patchlevel 3 ! %%CreationDate: Wed Sep 24 10:32:30 2008 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments *************** *** 48,59 **** /Author (Jaroslav Hajek) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Thu Aug 14 13:43:30 2008) /DOCINFO pdfmark end } ifelse % ! % Gnuplot Prolog Version 4.2 (August 2006) % /M {moveto} bind def /L {lineto} bind def --- 48,59 ---- /Author (Jaroslav Hajek) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Wed Sep 24 10:32:30 2008) /DOCINFO pdfmark end } ifelse % ! % Gnuplot Prolog Version 4.2 (November 2007) % /M {moveto} bind def /L {lineto} bind def *************** *** 63,68 **** --- 63,69 ---- /Z {closepath} bind def /C {setrgbcolor} bind def /f {rlineto fill} bind def + /Gshow {show} def % May be redefined later in the file to support UTF-8 /vpt2 vpt 2 mul def /hpt2 hpt 2 mul def /Lshow {currentpoint stroke M 0 vshift R *************** *** 425,441 **** { 5 get 3 eq {gsave} {grestore} ifelse } {dup dup 0 get findfont exch 1 get scalefont setfont [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 ! get exch 4 get {show} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop pop aload pop M} ifelse }ifelse }ifelse } ifelse } ! forall} bind def /MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont ! 6 get stringwidth pop add} {pop} ifelse} ifelse} forall} bind def /MLshow { currentpoint stroke M 0 exch R Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def --- 426,443 ---- { 5 get 3 eq {gsave} {grestore} ifelse } {dup dup 0 get findfont exch 1 get scalefont setfont [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 ! get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop pop aload pop M} ifelse }ifelse }ifelse } ifelse } ! forall} def ! /Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def /MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont ! 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def /MLshow { currentpoint stroke M 0 exch R Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def Files octave-3.0.2/doc/interpreter/extended.pdf and octave-3.0.3/doc/interpreter/extended.pdf differ diff -cNr octave-3.0.2/doc/interpreter/gplot.eps octave-3.0.3/doc/interpreter/gplot.eps *** octave-3.0.2/doc/interpreter/gplot.eps 2008-08-14 13:42:42.000000000 +0200 --- octave-3.0.3/doc/interpreter/gplot.eps 2008-09-24 10:31:46.000000000 +0200 *************** *** 1,7 **** %!PS-Adobe-2.0 EPSF-2.0 %%Title: gplot.eps %%Creator: gnuplot 4.2 patchlevel 3 ! %%CreationDate: Thu Aug 14 13:42:42 2008 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments --- 1,7 ---- %!PS-Adobe-2.0 EPSF-2.0 %%Title: gplot.eps %%Creator: gnuplot 4.2 patchlevel 3 ! %%CreationDate: Wed Sep 24 10:31:46 2008 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments *************** *** 48,59 **** /Author (Jaroslav Hajek) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Thu Aug 14 13:42:42 2008) /DOCINFO pdfmark end } ifelse % ! % Gnuplot Prolog Version 4.2 (August 2006) % /M {moveto} bind def /L {lineto} bind def --- 48,59 ---- /Author (Jaroslav Hajek) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Wed Sep 24 10:31:46 2008) /DOCINFO pdfmark end } ifelse % ! % Gnuplot Prolog Version 4.2 (November 2007) % /M {moveto} bind def /L {lineto} bind def *************** *** 63,68 **** --- 63,69 ---- /Z {closepath} bind def /C {setrgbcolor} bind def /f {rlineto fill} bind def + /Gshow {show} def % May be redefined later in the file to support UTF-8 /vpt2 vpt 2 mul def /hpt2 hpt 2 mul def /Lshow {currentpoint stroke M 0 vshift R *************** *** 425,441 **** { 5 get 3 eq {gsave} {grestore} ifelse } {dup dup 0 get findfont exch 1 get scalefont setfont [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 ! get exch 4 get {show} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop pop aload pop M} ifelse }ifelse }ifelse } ifelse } ! forall} bind def /MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont ! 6 get stringwidth pop add} {pop} ifelse} ifelse} forall} bind def /MLshow { currentpoint stroke M 0 exch R Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def --- 426,443 ---- { 5 get 3 eq {gsave} {grestore} ifelse } {dup dup 0 get findfont exch 1 get scalefont setfont [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 ! get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop pop aload pop M} ifelse }ifelse }ifelse } ifelse } ! forall} def ! /Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def /MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont ! 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def /MLshow { currentpoint stroke M 0 exch R Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def Files octave-3.0.2/doc/interpreter/gplot.pdf and octave-3.0.3/doc/interpreter/gplot.pdf differ diff -cNr octave-3.0.2/doc/interpreter/griddata.eps octave-3.0.3/doc/interpreter/griddata.eps *** octave-3.0.2/doc/interpreter/griddata.eps 2008-08-14 13:43:08.000000000 +0200 --- octave-3.0.3/doc/interpreter/griddata.eps 2008-09-24 10:32:11.000000000 +0200 *************** *** 1,7 **** %!PS-Adobe-2.0 EPSF-2.0 %%Title: griddata.eps %%Creator: gnuplot 4.2 patchlevel 3 ! %%CreationDate: Thu Aug 14 13:43:08 2008 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments --- 1,7 ---- %!PS-Adobe-2.0 EPSF-2.0 %%Title: griddata.eps %%Creator: gnuplot 4.2 patchlevel 3 ! %%CreationDate: Wed Sep 24 10:32:11 2008 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments *************** *** 48,59 **** /Author (Jaroslav Hajek) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Thu Aug 14 13:43:08 2008) /DOCINFO pdfmark end } ifelse % ! % Gnuplot Prolog Version 4.2 (August 2006) % /M {moveto} bind def /L {lineto} bind def --- 48,59 ---- /Author (Jaroslav Hajek) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Wed Sep 24 10:32:11 2008) /DOCINFO pdfmark end } ifelse % ! % Gnuplot Prolog Version 4.2 (November 2007) % /M {moveto} bind def /L {lineto} bind def *************** *** 63,68 **** --- 63,69 ---- /Z {closepath} bind def /C {setrgbcolor} bind def /f {rlineto fill} bind def + /Gshow {show} def % May be redefined later in the file to support UTF-8 /vpt2 vpt 2 mul def /hpt2 hpt 2 mul def /Lshow {currentpoint stroke M 0 vshift R *************** *** 425,441 **** { 5 get 3 eq {gsave} {grestore} ifelse } {dup dup 0 get findfont exch 1 get scalefont setfont [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 ! get exch 4 get {show} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop pop aload pop M} ifelse }ifelse }ifelse } ifelse } ! forall} bind def /MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont ! 6 get stringwidth pop add} {pop} ifelse} ifelse} forall} bind def /MLshow { currentpoint stroke M 0 exch R Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def --- 426,443 ---- { 5 get 3 eq {gsave} {grestore} ifelse } {dup dup 0 get findfont exch 1 get scalefont setfont [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 ! get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop pop aload pop M} ifelse }ifelse }ifelse } ifelse } ! forall} def ! /Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def /MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont ! 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def /MLshow { currentpoint stroke M 0 exch R Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def Files octave-3.0.2/doc/interpreter/griddata.pdf and octave-3.0.3/doc/interpreter/griddata.pdf differ diff -cNr octave-3.0.2/doc/interpreter/grid.eps octave-3.0.3/doc/interpreter/grid.eps *** octave-3.0.2/doc/interpreter/grid.eps 2008-08-14 13:42:45.000000000 +0200 --- octave-3.0.3/doc/interpreter/grid.eps 2008-09-24 10:31:49.000000000 +0200 *************** *** 1,7 **** %!PS-Adobe-2.0 EPSF-2.0 %%Title: grid.eps %%Creator: gnuplot 4.2 patchlevel 3 ! %%CreationDate: Thu Aug 14 13:42:45 2008 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments --- 1,7 ---- %!PS-Adobe-2.0 EPSF-2.0 %%Title: grid.eps %%Creator: gnuplot 4.2 patchlevel 3 ! %%CreationDate: Wed Sep 24 10:31:49 2008 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments *************** *** 48,59 **** /Author (Jaroslav Hajek) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Thu Aug 14 13:42:45 2008) /DOCINFO pdfmark end } ifelse % ! % Gnuplot Prolog Version 4.2 (August 2006) % /M {moveto} bind def /L {lineto} bind def --- 48,59 ---- /Author (Jaroslav Hajek) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Wed Sep 24 10:31:49 2008) /DOCINFO pdfmark end } ifelse % ! % Gnuplot Prolog Version 4.2 (November 2007) % /M {moveto} bind def /L {lineto} bind def *************** *** 63,68 **** --- 63,69 ---- /Z {closepath} bind def /C {setrgbcolor} bind def /f {rlineto fill} bind def + /Gshow {show} def % May be redefined later in the file to support UTF-8 /vpt2 vpt 2 mul def /hpt2 hpt 2 mul def /Lshow {currentpoint stroke M 0 vshift R *************** *** 425,441 **** { 5 get 3 eq {gsave} {grestore} ifelse } {dup dup 0 get findfont exch 1 get scalefont setfont [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 ! get exch 4 get {show} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop pop aload pop M} ifelse }ifelse }ifelse } ifelse } ! forall} bind def /MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont ! 6 get stringwidth pop add} {pop} ifelse} ifelse} forall} bind def /MLshow { currentpoint stroke M 0 exch R Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def --- 426,443 ---- { 5 get 3 eq {gsave} {grestore} ifelse } {dup dup 0 get findfont exch 1 get scalefont setfont [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 ! get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop pop aload pop M} ifelse }ifelse }ifelse } ifelse } ! forall} def ! /Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def /MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont ! 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def /MLshow { currentpoint stroke M 0 exch R Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def Files octave-3.0.2/doc/interpreter/grid.pdf and octave-3.0.3/doc/interpreter/grid.pdf differ diff -cNr octave-3.0.2/doc/interpreter/hist.eps octave-3.0.3/doc/interpreter/hist.eps *** octave-3.0.2/doc/interpreter/hist.eps 2008-08-14 13:43:19.000000000 +0200 --- octave-3.0.3/doc/interpreter/hist.eps 2008-09-24 10:32:20.000000000 +0200 *************** *** 1,7 **** %!PS-Adobe-2.0 EPSF-2.0 %%Title: hist.eps %%Creator: gnuplot 4.2 patchlevel 3 ! %%CreationDate: Thu Aug 14 13:43:19 2008 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments --- 1,7 ---- %!PS-Adobe-2.0 EPSF-2.0 %%Title: hist.eps %%Creator: gnuplot 4.2 patchlevel 3 ! %%CreationDate: Wed Sep 24 10:32:20 2008 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments *************** *** 48,59 **** /Author (Jaroslav Hajek) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Thu Aug 14 13:43:19 2008) /DOCINFO pdfmark end } ifelse % ! % Gnuplot Prolog Version 4.2 (August 2006) % /M {moveto} bind def /L {lineto} bind def --- 48,59 ---- /Author (Jaroslav Hajek) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Wed Sep 24 10:32:20 2008) /DOCINFO pdfmark end } ifelse % ! % Gnuplot Prolog Version 4.2 (November 2007) % /M {moveto} bind def /L {lineto} bind def *************** *** 63,68 **** --- 63,69 ---- /Z {closepath} bind def /C {setrgbcolor} bind def /f {rlineto fill} bind def + /Gshow {show} def % May be redefined later in the file to support UTF-8 /vpt2 vpt 2 mul def /hpt2 hpt 2 mul def /Lshow {currentpoint stroke M 0 vshift R *************** *** 425,441 **** { 5 get 3 eq {gsave} {grestore} ifelse } {dup dup 0 get findfont exch 1 get scalefont setfont [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 ! get exch 4 get {show} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop pop aload pop M} ifelse }ifelse }ifelse } ifelse } ! forall} bind def /MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont ! 6 get stringwidth pop add} {pop} ifelse} ifelse} forall} bind def /MLshow { currentpoint stroke M 0 exch R Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def --- 426,443 ---- { 5 get 3 eq {gsave} {grestore} ifelse } {dup dup 0 get findfont exch 1 get scalefont setfont [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 ! get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop pop aload pop M} ifelse }ifelse }ifelse } ifelse } ! forall} def ! /Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def /MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont ! 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def /MLshow { currentpoint stroke M 0 exch R Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def *************** *** 542,697 **** ] -46.7 MRshow 0.500 UL LTb ! 574 1045 M 63 0 V 6325 0 R -63 0 V stroke ! 0.00 0.00 0.00 C 490 1045 M [ [(Helvetica) 140.0 0.0 true true 0 (200)] ] -46.7 MRshow 0.500 UL LTb ! 574 1811 M 63 0 V 6325 0 R -63 0 V stroke ! 0.00 0.00 0.00 C 490 1811 M [ [(Helvetica) 140.0 0.0 true true 0 (400)] ] -46.7 MRshow 0.500 UL LTb ! 574 2576 M 63 0 V 6325 0 R -63 0 V stroke ! 0.00 0.00 0.00 C 490 2576 M [ [(Helvetica) 140.0 0.0 true true 0 (600)] ] -46.7 MRshow 0.500 UL LTb ! 574 3341 M 63 0 V 6325 0 R -63 0 V stroke ! 0.00 0.00 0.00 C 490 3341 M [ [(Helvetica) 140.0 0.0 true true 0 (800)] ] -46.7 MRshow 0.500 UL LTb ! 574 4107 M 63 0 V 6325 0 R -63 0 V stroke ! 0.00 0.00 0.00 C 490 4107 M [ [(Helvetica) 140.0 0.0 true true 0 (1000)] ] -46.7 MRshow 0.500 UL LTb ! 574 4872 M ! 63 0 V ! 6325 0 R ! -63 0 V ! stroke ! 0.00 0.00 0.00 C 490 4872 M ! [ [(Helvetica) 140.0 0.0 true true 0 (1200)] ! ] -46.7 MRshow ! 0.500 UL ! LTb ! 1088 280 M ! 0 63 V ! 0 4529 R ! 0 -63 V ! stroke ! 0.00 0.00 0.00 C 1088 140 M ! [ [(Helvetica) 140.0 0.0 true true 0 (-4)] ! ] -46.7 MCshow ! 0.500 UL ! LTb ! 1822 280 M 0 63 V 0 4529 R 0 -63 V stroke ! 0.00 0.00 0.00 C 1822 140 M [ [(Helvetica) 140.0 0.0 true true 0 (-3)] ] -46.7 MCshow 0.500 UL LTb ! 2556 280 M 0 63 V 0 4529 R 0 -63 V stroke ! 0.00 0.00 0.00 C 2556 140 M [ [(Helvetica) 140.0 0.0 true true 0 (-2)] ] -46.7 MCshow 0.500 UL LTb ! 3291 280 M 0 63 V 0 4529 R 0 -63 V stroke ! 0.00 0.00 0.00 C 3291 140 M [ [(Helvetica) 140.0 0.0 true true 0 (-1)] ] -46.7 MCshow 0.500 UL LTb ! 4025 280 M 0 63 V 0 4529 R 0 -63 V stroke ! 0.00 0.00 0.00 C 4025 140 M [ [(Helvetica) 140.0 0.0 true true 0 (0)] ] -46.7 MCshow 0.500 UL LTb ! 4759 280 M 0 63 V 0 4529 R 0 -63 V stroke ! 0.00 0.00 0.00 C 4759 140 M [ [(Helvetica) 140.0 0.0 true true 0 (1)] ] -46.7 MCshow 0.500 UL LTb ! 5493 280 M 0 63 V 0 4529 R 0 -63 V stroke ! 0.00 0.00 0.00 C 5493 140 M [ [(Helvetica) 140.0 0.0 true true 0 (2)] ] -46.7 MCshow 0.500 UL LTb ! 6228 280 M 0 63 V 0 4529 R 0 -63 V stroke ! 0.00 0.00 0.00 C 6228 140 M [ [(Helvetica) 140.0 0.0 true true 0 (3)] ] -46.7 MCshow 0.500 UL LTb - 6962 280 M - 0 63 V - 0 4529 R - 0 -63 V - stroke - 0.00 0.00 0.00 C 6962 140 M - [ [(Helvetica) 140.0 0.0 true true 0 (4)] - ] -46.7 MCshow - 0.500 UL - LTb 0.500 UL LTb 574 4872 N --- 544,669 ---- ] -46.7 MRshow 0.500 UL LTb ! 574 1115 M 63 0 V 6325 0 R -63 0 V stroke ! 0.00 0.00 0.00 C 490 1115 M [ [(Helvetica) 140.0 0.0 true true 0 (200)] ] -46.7 MRshow 0.500 UL LTb ! 574 1950 M 63 0 V 6325 0 R -63 0 V stroke ! 0.00 0.00 0.00 C 490 1950 M [ [(Helvetica) 140.0 0.0 true true 0 (400)] ] -46.7 MRshow 0.500 UL LTb ! 574 2785 M 63 0 V 6325 0 R -63 0 V stroke ! 0.00 0.00 0.00 C 490 2785 M [ [(Helvetica) 140.0 0.0 true true 0 (600)] ] -46.7 MRshow 0.500 UL LTb ! 574 3620 M 63 0 V 6325 0 R -63 0 V stroke ! 0.00 0.00 0.00 C 490 3620 M [ [(Helvetica) 140.0 0.0 true true 0 (800)] ] -46.7 MRshow 0.500 UL LTb ! 574 4455 M 63 0 V 6325 0 R -63 0 V stroke ! 0.00 0.00 0.00 C 490 4455 M [ [(Helvetica) 140.0 0.0 true true 0 (1000)] ] -46.7 MRshow 0.500 UL LTb ! 1255 280 M 0 63 V 0 4529 R 0 -63 V stroke ! 0.00 0.00 0.00 C 1255 140 M [ [(Helvetica) 140.0 0.0 true true 0 (-3)] ] -46.7 MCshow 0.500 UL LTb ! 2107 280 M 0 63 V 0 4529 R 0 -63 V stroke ! 0.00 0.00 0.00 C 2107 140 M [ [(Helvetica) 140.0 0.0 true true 0 (-2)] ] -46.7 MCshow 0.500 UL LTb ! 2959 280 M 0 63 V 0 4529 R 0 -63 V stroke ! 0.00 0.00 0.00 C 2959 140 M [ [(Helvetica) 140.0 0.0 true true 0 (-1)] ] -46.7 MCshow 0.500 UL LTb ! 3811 280 M 0 63 V 0 4529 R 0 -63 V stroke ! 0.00 0.00 0.00 C 3811 140 M [ [(Helvetica) 140.0 0.0 true true 0 (0)] ] -46.7 MCshow 0.500 UL LTb ! 4662 280 M 0 63 V 0 4529 R 0 -63 V stroke ! 0.00 0.00 0.00 C 4662 140 M [ [(Helvetica) 140.0 0.0 true true 0 (1)] ] -46.7 MCshow 0.500 UL LTb ! 5514 280 M 0 63 V 0 4529 R 0 -63 V stroke ! 0.00 0.00 0.00 C 5514 140 M [ [(Helvetica) 140.0 0.0 true true 0 (2)] ] -46.7 MCshow 0.500 UL LTb ! 6366 280 M 0 63 V 0 4529 R 0 -63 V stroke ! 0.00 0.00 0.00 C 6366 140 M [ [(Helvetica) 140.0 0.0 true true 0 (3)] ] -46.7 MCshow 0.500 UL LTb 0.500 UL LTb 574 4872 N *************** *** 705,719 **** LTb 1.000 UL LT0 ! 0.00 0.00 0.50 C gsave 646 280 N 0 0 V 0 4 V 210 0 V 0 -4 V 1 PolyFill ! 646 280 M 0 4 V 210 0 V 0 -4 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 646 280 M 0 4 V 210 0 V 0 -4 V --- 677,691 ---- LTb 1.000 UL LT0 ! 0.00 0.00 0.50 C gsave 580 280 N 0 0 V 0 4 V 210 0 V 0 -4 V 1 PolyFill ! 580 280 M 0 4 V 210 0 V 0 -4 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 580 280 M 0 4 V 210 0 V 0 -4 V *************** *** 721,1183 **** stroke 1.000 UL LT2 ! 0.00 0.00 0.50 C gsave 856 280 N 0 0 V 0 0 V 209 0 V 0 0 V 1 PolyFill ! 856 280 M ! 209 0 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 856 280 M ! 209 0 V ! -209 0 V stroke 1.000 UL LT4 ! 0.00 0.00 0.50 C gsave 1065 280 N 0 0 V 0 4 V 210 0 V 0 -4 V 1 PolyFill ! 1065 280 M ! 0 4 V 210 0 V ! 0 -4 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 1065 280 M ! 0 4 V 210 0 V ! 0 -4 V -210 0 V stroke 1.000 UL LT6 ! 0.00 0.00 0.50 C gsave 1275 280 N 0 0 V 0 4 V 209 0 V 0 -4 V 1 PolyFill ! 1275 280 M ! 0 4 V ! 209 0 V ! 0 -4 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 1275 280 M ! 0 4 V ! 209 0 V ! 0 -4 V ! -209 0 V stroke 1.000 UL LT8 ! 0.00 0.00 0.50 C gsave 1484 280 N 0 0 V 0 23 V 209 0 V 0 -23 V 1 PolyFill ! 1484 280 M ! 0 23 V ! 209 0 V ! 0 -23 V ! stroke ! 0.500 UL ! LT0 ! 0.00 0.00 0.00 C 1484 280 M ! 0 23 V ! 209 0 V ! 0 -23 V ! -209 0 V ! stroke ! 1.000 UL ! LT1 ! 0.00 0.00 0.50 C gsave 1693 280 N 0 0 V 0 73 V 210 0 V 0 -73 V 1 PolyFill ! 1693 280 M ! 0 73 V 210 0 V ! 0 -73 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 1693 280 M ! 0 73 V 210 0 V ! 0 -73 V -210 0 V stroke 1.000 UL ! LT3 ! 0.00 0.00 0.50 C gsave 1903 280 N 0 0 V 0 57 V 209 0 V 0 -57 V 1 PolyFill ! 1903 280 M ! 0 57 V ! 209 0 V ! 0 -57 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 1903 280 M ! 0 57 V ! 209 0 V ! 0 -57 V ! -209 0 V stroke 1.000 UL ! LT5 ! 0.00 0.00 0.50 C gsave 2112 280 N 0 0 V 0 264 V 210 0 V 0 -264 V 1 PolyFill ! 2112 280 M ! 0 264 V 210 0 V ! 0 -264 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 2112 280 M ! 0 264 V 210 0 V ! 0 -264 V -210 0 V stroke 1.000 UL ! LT7 ! 0.00 0.00 0.50 C gsave 2322 280 N 0 0 V 0 337 V 209 0 V 0 -337 V 1 PolyFill ! 2322 280 M ! 0 337 V ! 209 0 V ! 0 -337 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 2322 280 M ! 0 337 V ! 209 0 V ! 0 -337 V ! -209 0 V stroke 1.000 UL ! LT0 ! 0.00 0.00 0.50 C gsave 2531 280 N 0 0 V 0 719 V 210 0 V 0 -719 V 1 PolyFill ! 2531 280 M ! 0 719 V 210 0 V ! 0 -719 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 2531 280 M ! 0 719 V 210 0 V ! 0 -719 V -210 0 V stroke 1.000 UL ! LT2 ! 0.00 0.00 0.50 C gsave 2741 280 N 0 0 V 0 1117 V 209 0 V 0 -1117 V 1 PolyFill ! 2741 280 M ! 0 1117 V ! 209 0 V ! 0 -1117 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 2741 280 M ! 0 1117 V ! 209 0 V ! 0 -1117 V ! -209 0 V stroke 1.000 UL ! LT4 ! 0.00 0.00 0.50 C gsave 2950 280 N 0 0 V 0 1814 V 210 0 V 0 -1814 V 1 PolyFill ! 2950 280 M ! 0 1814 V 210 0 V ! 0 -1814 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 2950 280 M ! 0 1814 V 210 0 V ! 0 -1814 V -210 0 V stroke 1.000 UL LT6 ! 0.00 0.00 0.50 C gsave 3160 280 N 0 0 V 0 2652 V 209 0 V 0 -2652 V 1 PolyFill ! 3160 280 M ! 0 2652 V ! 209 0 V ! 0 -2652 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 3160 280 M ! 0 2652 V ! 209 0 V ! 0 -2652 V ! -209 0 V stroke 1.000 UL LT8 ! 0.00 0.00 0.50 C gsave 3369 280 N 0 0 V 0 3092 V 209 0 V 0 -3092 V 1 PolyFill ! 3369 280 M ! 0 3092 V ! 209 0 V ! 0 -3092 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 3369 280 M ! 0 3092 V ! 209 0 V ! 0 -3092 V ! -209 0 V stroke 1.000 UL LT1 ! 0.00 0.00 0.50 C gsave 3578 280 N 0 0 V 0 3685 V 210 0 V 0 -3685 V 1 PolyFill ! 3578 280 M ! 0 3685 V 210 0 V ! 0 -3685 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 3578 280 M ! 0 3685 V 210 0 V ! 0 -3685 V -210 0 V stroke 1.000 UL LT3 ! 0.00 0.00 0.50 C gsave 3788 280 N 0 0 V 0 4301 V 209 0 V 0 -4301 V 1 PolyFill ! 3788 280 M ! 0 4301 V ! 209 0 V ! 0 -4301 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 3788 280 M ! 0 4301 V ! 209 0 V ! 0 -4301 V ! -209 0 V stroke 1.000 UL LT5 ! 0.00 0.00 0.50 C gsave 3997 280 N 0 0 V 0 4466 V 210 0 V 0 -4466 V 1 PolyFill ! 3997 280 M ! 0 4466 V 210 0 V ! 0 -4466 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 3997 280 M ! 0 4466 V 210 0 V ! 0 -4466 V -210 0 V stroke 1.000 UL LT7 ! 0.00 0.00 0.50 C gsave 4207 280 N 0 0 V 0 4018 V 209 0 V 0 -4018 V 1 PolyFill ! 4207 280 M ! 0 4018 V ! 209 0 V ! 0 -4018 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 4207 280 M ! 0 4018 V ! 209 0 V ! 0 -4018 V ! -209 0 V stroke 1.000 UL LT0 ! 0.00 0.00 0.50 C gsave 4416 280 N 0 0 V 0 3746 V 210 0 V 0 -3746 V 1 PolyFill ! 4416 280 M ! 0 3746 V 210 0 V ! 0 -3746 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 4416 280 M ! 0 3746 V 210 0 V ! 0 -3746 V -210 0 V stroke 1.000 UL LT2 ! 0.00 0.00 0.50 C gsave 4626 280 N 0 0 V 0 2484 V 209 0 V 0 -2484 V 1 PolyFill ! 4626 280 M ! 0 2484 V ! 209 0 V ! 0 -2484 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 4626 280 M ! 0 2484 V ! 209 0 V ! 0 -2484 V ! -209 0 V stroke 1.000 UL LT4 ! 0.00 0.00 0.50 C gsave 4835 280 N 0 0 V 0 2177 V 210 0 V 0 -2177 V 1 PolyFill ! 4835 280 M ! 0 2177 V 210 0 V ! 0 -2177 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 4835 280 M ! 0 2177 V 210 0 V ! 0 -2177 V -210 0 V stroke 1.000 UL LT6 ! 0.00 0.00 0.50 C gsave 5045 280 N 0 0 V 0 1393 V 209 0 V 0 -1393 V 1 PolyFill ! 5045 280 M ! 0 1393 V ! 209 0 V ! 0 -1393 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 5045 280 M ! 0 1393 V ! 209 0 V ! 0 -1393 V ! -209 0 V stroke 1.000 UL LT8 ! 0.00 0.00 0.50 C gsave 5254 280 N 0 0 V 0 865 V 209 0 V 0 -865 V 1 PolyFill ! 5254 280 M ! 0 865 V ! 209 0 V ! 0 -865 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 5254 280 M ! 0 865 V ! 209 0 V ! 0 -865 V ! -209 0 V stroke 1.000 UL LT1 ! 0.00 0.00 0.50 C gsave 5463 280 N 0 0 V 0 513 V 210 0 V 0 -513 V 1 PolyFill ! 5463 280 M ! 0 513 V 210 0 V ! 0 -513 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 5463 280 M ! 0 513 V 210 0 V ! 0 -513 V -210 0 V stroke 1.000 UL ! LT3 ! 0.00 0.00 0.50 C gsave 5673 280 N 0 0 V 0 226 V 209 0 V 0 -226 V 1 PolyFill ! 5673 280 M ! 0 226 V ! 209 0 V ! 0 -226 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 5673 280 M ! 0 226 V ! 209 0 V ! 0 -226 V ! -209 0 V stroke 1.000 UL ! LT5 ! 0.00 0.00 0.50 C gsave 5882 280 N 0 0 V 0 119 V 210 0 V 0 -119 V 1 PolyFill ! 5882 280 M ! 0 119 V 210 0 V ! 0 -119 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 5882 280 M ! 0 119 V 210 0 V ! 0 -119 V -210 0 V stroke 1.000 UL ! LT7 ! 0.00 0.00 0.50 C gsave 6092 280 N 0 0 V 0 61 V 209 0 V 0 -61 V 1 PolyFill ! 6092 280 M ! 0 61 V ! 209 0 V ! 0 -61 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 6092 280 M ! 0 61 V ! 209 0 V ! 0 -61 V ! -209 0 V stroke 1.000 UL ! LT0 ! 0.00 0.00 0.50 C gsave 6301 280 N 0 0 V 0 42 V 210 0 V 0 -42 V 1 PolyFill ! 6301 280 M ! 0 42 V 210 0 V ! 0 -42 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 6301 280 M ! 0 42 V 210 0 V ! 0 -42 V -210 0 V stroke 1.000 UL ! LT2 ! 0.00 0.00 0.50 C gsave 6511 280 N 0 0 V 0 8 V 209 0 V 0 -8 V 1 PolyFill ! 6511 280 M 0 8 V ! 209 0 V 0 -8 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 6511 280 M 0 8 V ! 209 0 V 0 -8 V ! -209 0 V ! stroke ! 1.000 UL ! LT4 ! 0.00 0.00 0.50 C gsave 6720 280 N 0 0 V 0 4 V 209 0 V 0 -4 V 1 PolyFill ! 6720 280 M ! 0 4 V ! 209 0 V ! 0 -4 V ! stroke ! 0.500 UL ! LT0 ! 0.00 0.00 0.00 C 6720 280 M ! 0 4 V ! 209 0 V ! 0 -4 V ! -209 0 V stroke LTb 574 4872 N --- 693,1159 ---- stroke 1.000 UL LT2 ! 0.00 0.00 0.50 C gsave 790 280 N 0 0 V 0 13 V 211 0 V 0 -13 V 1 PolyFill ! 790 280 M ! 0 13 V ! 211 0 V ! 0 -13 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 790 280 M ! 0 13 V ! 211 0 V ! 0 -13 V ! -211 0 V stroke 1.000 UL LT4 ! 0.00 0.00 0.50 C gsave 1001 280 N 0 0 V 0 42 V 210 0 V 0 -42 V 1 PolyFill ! 1001 280 M ! 0 42 V 210 0 V ! 0 -42 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 1001 280 M ! 0 42 V 210 0 V ! 0 -42 V -210 0 V stroke 1.000 UL LT6 ! 0.00 0.00 0.50 C gsave 1211 280 N 0 0 V 0 38 V 211 0 V 0 -38 V 1 PolyFill ! 1211 280 M ! 0 38 V ! 211 0 V ! 0 -38 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 1211 280 M ! 0 38 V ! 211 0 V ! 0 -38 V ! -211 0 V stroke 1.000 UL LT8 ! 0.00 0.00 0.50 C gsave 1422 280 N 0 0 V 0 134 V 210 0 V 0 -134 V 1 PolyFill ! 1422 280 M ! 0 134 V 210 0 V ! 0 -134 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 1422 280 M ! 0 134 V 210 0 V ! 0 -134 V -210 0 V stroke 1.000 UL ! LT1 ! 0.00 0.00 0.50 C gsave 1632 280 N 0 0 V 0 217 V 211 0 V 0 -217 V 1 PolyFill ! 1632 280 M ! 0 217 V ! 211 0 V ! 0 -217 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 1632 280 M ! 0 217 V ! 211 0 V ! 0 -217 V ! -211 0 V stroke 1.000 UL ! LT3 ! 0.00 0.00 0.50 C gsave 1843 280 N 0 0 V 0 376 V 210 0 V 0 -376 V 1 PolyFill ! 1843 280 M ! 0 376 V 210 0 V ! 0 -376 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 1843 280 M ! 0 376 V 210 0 V ! 0 -376 V -210 0 V stroke 1.000 UL ! LT5 ! 0.00 0.00 0.50 C gsave 2053 280 N 0 0 V 0 614 V 211 0 V 0 -614 V 1 PolyFill ! 2053 280 M ! 0 614 V ! 211 0 V ! 0 -614 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 2053 280 M ! 0 614 V ! 211 0 V ! 0 -614 V ! -211 0 V stroke 1.000 UL ! LT7 ! 0.00 0.00 0.50 C gsave 2264 280 N 0 0 V 0 952 V 210 0 V 0 -952 V 1 PolyFill ! 2264 280 M ! 0 952 V 210 0 V ! 0 -952 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 2264 280 M ! 0 952 V 210 0 V ! 0 -952 V -210 0 V stroke 1.000 UL ! LT0 ! 0.00 0.00 0.50 C gsave 2474 280 N 0 0 V 0 1302 V 211 0 V 0 -1302 V 1 PolyFill ! 2474 280 M ! 0 1302 V ! 211 0 V ! 0 -1302 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 2474 280 M ! 0 1302 V ! 211 0 V ! 0 -1302 V ! -211 0 V stroke 1.000 UL ! LT2 ! 0.00 0.00 0.50 C gsave 2685 280 N 0 0 V 0 2050 V 210 0 V 0 -2050 V 1 PolyFill ! 2685 280 M ! 0 2050 V 210 0 V ! 0 -2050 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 2685 280 M ! 0 2050 V 210 0 V ! 0 -2050 V -210 0 V stroke 1.000 UL + LT4 + 0.00 0.00 0.50 C gsave 2895 280 N 0 0 V 0 2697 V 211 0 V 0 -2697 V 1 PolyFill + 2895 280 M + 0 2697 V + 211 0 V + 0 -2697 V + stroke + 0.500 UL + LT0 + 0.00 0.00 0.00 C 2895 280 M + 0 2697 V + 211 0 V + 0 -2697 V + -211 0 V + stroke + 1.000 UL LT6 ! 0.00 0.00 0.50 C gsave 3106 280 N 0 0 V 0 3056 V 210 0 V 0 -3056 V 1 PolyFill ! 3106 280 M ! 0 3056 V ! 210 0 V ! 0 -3056 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 3106 280 M ! 0 3056 V ! 210 0 V ! 0 -3056 V ! -210 0 V stroke 1.000 UL LT8 ! 0.00 0.00 0.50 C gsave 3316 280 N 0 0 V 0 3720 V 211 0 V 0 -3720 V 1 PolyFill ! 3316 280 M ! 0 3720 V ! 211 0 V ! 0 -3720 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 3316 280 M ! 0 3720 V ! 211 0 V ! 0 -3720 V ! -211 0 V stroke 1.000 UL LT1 ! 0.00 0.00 0.50 C gsave 3527 280 N 0 0 V 0 3945 V 210 0 V 0 -3945 V 1 PolyFill ! 3527 280 M ! 0 3945 V 210 0 V ! 0 -3945 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 3527 280 M ! 0 3945 V 210 0 V ! 0 -3945 V -210 0 V stroke 1.000 UL LT3 ! 0.00 0.00 0.50 C gsave 3737 280 N 0 0 V 0 4220 V 211 0 V 0 -4220 V 1 PolyFill ! 3737 280 M ! 0 4220 V ! 211 0 V ! 0 -4220 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 3737 280 M ! 0 4220 V ! 211 0 V ! 0 -4220 V ! -211 0 V stroke 1.000 UL LT5 ! 0.00 0.00 0.50 C gsave 3948 280 N 0 0 V 0 3978 V 210 0 V 0 -3978 V 1 PolyFill ! 3948 280 M ! 0 3978 V 210 0 V ! 0 -3978 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 3948 280 M ! 0 3978 V 210 0 V ! 0 -3978 V -210 0 V stroke 1.000 UL LT7 ! 0.00 0.00 0.50 C gsave 4158 280 N 0 0 V 0 3457 V 211 0 V 0 -3457 V 1 PolyFill ! 4158 280 M ! 0 3457 V ! 211 0 V ! 0 -3457 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 4158 280 M ! 0 3457 V ! 211 0 V ! 0 -3457 V ! -211 0 V stroke 1.000 UL LT0 ! 0.00 0.00 0.50 C gsave 4369 280 N 0 0 V 0 3106 V 210 0 V 0 -3106 V 1 PolyFill ! 4369 280 M ! 0 3106 V 210 0 V ! 0 -3106 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 4369 280 M ! 0 3106 V 210 0 V ! 0 -3106 V -210 0 V stroke 1.000 UL LT2 ! 0.00 0.00 0.50 C gsave 4579 280 N 0 0 V 0 2584 V 211 0 V 0 -2584 V 1 PolyFill ! 4579 280 M ! 0 2584 V ! 211 0 V ! 0 -2584 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 4579 280 M ! 0 2584 V ! 211 0 V ! 0 -2584 V ! -211 0 V stroke 1.000 UL LT4 ! 0.00 0.00 0.50 C gsave 4790 280 N 0 0 V 0 1908 V 210 0 V 0 -1908 V 1 PolyFill ! 4790 280 M ! 0 1908 V 210 0 V ! 0 -1908 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 4790 280 M ! 0 1908 V 210 0 V ! 0 -1908 V -210 0 V stroke 1.000 UL LT6 ! 0.00 0.00 0.50 C gsave 5000 280 N 0 0 V 0 1261 V 211 0 V 0 -1261 V 1 PolyFill ! 5000 280 M ! 0 1261 V ! 211 0 V ! 0 -1261 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 5000 280 M ! 0 1261 V ! 211 0 V ! 0 -1261 V ! -211 0 V stroke 1.000 UL LT8 ! 0.00 0.00 0.50 C gsave 5211 280 N 0 0 V 0 877 V 210 0 V 0 -877 V 1 PolyFill ! 5211 280 M ! 0 877 V ! 210 0 V ! 0 -877 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 5211 280 M ! 0 877 V ! 210 0 V ! 0 -877 V ! -210 0 V stroke 1.000 UL LT1 ! 0.00 0.00 0.50 C gsave 5421 280 N 0 0 V 0 534 V 211 0 V 0 -534 V 1 PolyFill ! 5421 280 M ! 0 534 V ! 211 0 V ! 0 -534 V ! stroke ! 0.500 UL ! LT0 ! 0.00 0.00 0.00 C 5421 280 M ! 0 534 V ! 211 0 V ! 0 -534 V ! -211 0 V ! stroke ! 1.000 UL ! LT3 ! 0.00 0.00 0.50 C gsave 5632 280 N 0 0 V 0 321 V 210 0 V 0 -321 V 1 PolyFill ! 5632 280 M ! 0 321 V 210 0 V ! 0 -321 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 5632 280 M ! 0 321 V 210 0 V ! 0 -321 V -210 0 V stroke 1.000 UL ! LT5 ! 0.00 0.00 0.50 C gsave 5842 280 N 0 0 V 0 150 V 211 0 V 0 -150 V 1 PolyFill ! 5842 280 M ! 0 150 V ! 211 0 V ! 0 -150 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 5842 280 M ! 0 150 V ! 211 0 V ! 0 -150 V ! -211 0 V stroke 1.000 UL ! LT7 ! 0.00 0.00 0.50 C gsave 6053 280 N 0 0 V 0 104 V 210 0 V 0 -104 V 1 PolyFill ! 6053 280 M ! 0 104 V 210 0 V ! 0 -104 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 6053 280 M ! 0 104 V 210 0 V ! 0 -104 V -210 0 V stroke 1.000 UL ! LT0 ! 0.00 0.00 0.50 C gsave 6263 280 N 0 0 V 0 46 V 211 0 V 0 -46 V 1 PolyFill ! 6263 280 M ! 0 46 V ! 211 0 V ! 0 -46 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 6263 280 M ! 0 46 V ! 211 0 V ! 0 -46 V ! -211 0 V stroke 1.000 UL ! LT2 ! 0.00 0.00 0.50 C gsave 6474 280 N 0 0 V 0 33 V 210 0 V 0 -33 V 1 PolyFill ! 6474 280 M ! 0 33 V 210 0 V ! 0 -33 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 6474 280 M ! 0 33 V 210 0 V ! 0 -33 V -210 0 V stroke 1.000 UL ! LT4 ! 0.00 0.00 0.50 C gsave 6684 280 N 0 0 V 0 8 V 211 0 V 0 -8 V 1 PolyFill ! 6684 280 M 0 8 V ! 211 0 V 0 -8 V stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 6684 280 M 0 8 V ! 211 0 V 0 -8 V ! -211 0 V stroke LTb 574 4872 N Files octave-3.0.2/doc/interpreter/hist.pdf and octave-3.0.3/doc/interpreter/hist.pdf differ Files octave-3.0.2/doc/interpreter/hist.png and octave-3.0.3/doc/interpreter/hist.png differ Files octave-3.0.2/doc/interpreter/HTML/errorbar.png and octave-3.0.3/doc/interpreter/HTML/errorbar.png differ Files octave-3.0.2/doc/interpreter/HTML/hist.png and octave-3.0.3/doc/interpreter/HTML/hist.png differ diff -cNr octave-3.0.2/doc/interpreter/inpolygon.eps octave-3.0.3/doc/interpreter/inpolygon.eps *** octave-3.0.2/doc/interpreter/inpolygon.eps 2008-08-14 13:43:15.000000000 +0200 --- octave-3.0.3/doc/interpreter/inpolygon.eps 2008-09-24 10:32:16.000000000 +0200 *************** *** 1,7 **** %!PS-Adobe-2.0 EPSF-2.0 %%Title: inpolygon.eps %%Creator: gnuplot 4.2 patchlevel 3 ! %%CreationDate: Thu Aug 14 13:43:15 2008 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments --- 1,7 ---- %!PS-Adobe-2.0 EPSF-2.0 %%Title: inpolygon.eps %%Creator: gnuplot 4.2 patchlevel 3 ! %%CreationDate: Wed Sep 24 10:32:16 2008 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments *************** *** 48,59 **** /Author (Jaroslav Hajek) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Thu Aug 14 13:43:15 2008) /DOCINFO pdfmark end } ifelse % ! % Gnuplot Prolog Version 4.2 (August 2006) % /M {moveto} bind def /L {lineto} bind def --- 48,59 ---- /Author (Jaroslav Hajek) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Wed Sep 24 10:32:16 2008) /DOCINFO pdfmark end } ifelse % ! % Gnuplot Prolog Version 4.2 (November 2007) % /M {moveto} bind def /L {lineto} bind def *************** *** 63,68 **** --- 63,69 ---- /Z {closepath} bind def /C {setrgbcolor} bind def /f {rlineto fill} bind def + /Gshow {show} def % May be redefined later in the file to support UTF-8 /vpt2 vpt 2 mul def /hpt2 hpt 2 mul def /Lshow {currentpoint stroke M 0 vshift R *************** *** 425,441 **** { 5 get 3 eq {gsave} {grestore} ifelse } {dup dup 0 get findfont exch 1 get scalefont setfont [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 ! get exch 4 get {show} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop pop aload pop M} ifelse }ifelse }ifelse } ifelse } ! forall} bind def /MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont ! 6 get stringwidth pop add} {pop} ifelse} ifelse} forall} bind def /MLshow { currentpoint stroke M 0 exch R Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def --- 426,443 ---- { 5 get 3 eq {gsave} {grestore} ifelse } {dup dup 0 get findfont exch 1 get scalefont setfont [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 ! get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop pop aload pop M} ifelse }ifelse }ifelse } ifelse } ! forall} def ! /Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def /MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont ! 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def /MLshow { currentpoint stroke M 0 exch R Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def Files octave-3.0.2/doc/interpreter/inpolygon.pdf and octave-3.0.3/doc/interpreter/inpolygon.pdf differ diff -cNr octave-3.0.2/doc/interpreter/interpderiv1.eps octave-3.0.3/doc/interpreter/interpderiv1.eps *** octave-3.0.2/doc/interpreter/interpderiv1.eps 2008-08-14 13:42:59.000000000 +0200 --- octave-3.0.3/doc/interpreter/interpderiv1.eps 2008-09-24 10:32:02.000000000 +0200 *************** *** 1,7 **** %!PS-Adobe-2.0 EPSF-2.0 %%Title: interpderiv1.eps %%Creator: gnuplot 4.2 patchlevel 3 ! %%CreationDate: Thu Aug 14 13:42:59 2008 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments --- 1,7 ---- %!PS-Adobe-2.0 EPSF-2.0 %%Title: interpderiv1.eps %%Creator: gnuplot 4.2 patchlevel 3 ! %%CreationDate: Wed Sep 24 10:32:02 2008 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments *************** *** 48,59 **** /Author (Jaroslav Hajek) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Thu Aug 14 13:42:59 2008) /DOCINFO pdfmark end } ifelse % ! % Gnuplot Prolog Version 4.2 (August 2006) % /M {moveto} bind def /L {lineto} bind def --- 48,59 ---- /Author (Jaroslav Hajek) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Wed Sep 24 10:32:02 2008) /DOCINFO pdfmark end } ifelse % ! % Gnuplot Prolog Version 4.2 (November 2007) % /M {moveto} bind def /L {lineto} bind def *************** *** 63,68 **** --- 63,69 ---- /Z {closepath} bind def /C {setrgbcolor} bind def /f {rlineto fill} bind def + /Gshow {show} def % May be redefined later in the file to support UTF-8 /vpt2 vpt 2 mul def /hpt2 hpt 2 mul def /Lshow {currentpoint stroke M 0 vshift R *************** *** 425,441 **** { 5 get 3 eq {gsave} {grestore} ifelse } {dup dup 0 get findfont exch 1 get scalefont setfont [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 ! get exch 4 get {show} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop pop aload pop M} ifelse }ifelse }ifelse } ifelse } ! forall} bind def /MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont ! 6 get stringwidth pop add} {pop} ifelse} ifelse} forall} bind def /MLshow { currentpoint stroke M 0 exch R Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def --- 426,443 ---- { 5 get 3 eq {gsave} {grestore} ifelse } {dup dup 0 get findfont exch 1 get scalefont setfont [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 ! get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop pop aload pop M} ifelse }ifelse }ifelse } ifelse } ! forall} def ! /Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def /MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont ! 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def /MLshow { currentpoint stroke M 0 exch R Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def Files octave-3.0.2/doc/interpreter/interpderiv1.pdf and octave-3.0.3/doc/interpreter/interpderiv1.pdf differ diff -cNr octave-3.0.2/doc/interpreter/interpderiv2.eps octave-3.0.3/doc/interpreter/interpderiv2.eps *** octave-3.0.2/doc/interpreter/interpderiv2.eps 2008-08-14 13:43:01.000000000 +0200 --- octave-3.0.3/doc/interpreter/interpderiv2.eps 2008-09-24 10:32:04.000000000 +0200 *************** *** 1,7 **** %!PS-Adobe-2.0 EPSF-2.0 %%Title: interpderiv2.eps %%Creator: gnuplot 4.2 patchlevel 3 ! %%CreationDate: Thu Aug 14 13:43:01 2008 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments --- 1,7 ---- %!PS-Adobe-2.0 EPSF-2.0 %%Title: interpderiv2.eps %%Creator: gnuplot 4.2 patchlevel 3 ! %%CreationDate: Wed Sep 24 10:32:04 2008 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments *************** *** 48,59 **** /Author (Jaroslav Hajek) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Thu Aug 14 13:43:01 2008) /DOCINFO pdfmark end } ifelse % ! % Gnuplot Prolog Version 4.2 (August 2006) % /M {moveto} bind def /L {lineto} bind def --- 48,59 ---- /Author (Jaroslav Hajek) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Wed Sep 24 10:32:04 2008) /DOCINFO pdfmark end } ifelse % ! % Gnuplot Prolog Version 4.2 (November 2007) % /M {moveto} bind def /L {lineto} bind def *************** *** 63,68 **** --- 63,69 ---- /Z {closepath} bind def /C {setrgbcolor} bind def /f {rlineto fill} bind def + /Gshow {show} def % May be redefined later in the file to support UTF-8 /vpt2 vpt 2 mul def /hpt2 hpt 2 mul def /Lshow {currentpoint stroke M 0 vshift R *************** *** 425,441 **** { 5 get 3 eq {gsave} {grestore} ifelse } {dup dup 0 get findfont exch 1 get scalefont setfont [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 ! get exch 4 get {show} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop pop aload pop M} ifelse }ifelse }ifelse } ifelse } ! forall} bind def /MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont ! 6 get stringwidth pop add} {pop} ifelse} ifelse} forall} bind def /MLshow { currentpoint stroke M 0 exch R Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def --- 426,443 ---- { 5 get 3 eq {gsave} {grestore} ifelse } {dup dup 0 get findfont exch 1 get scalefont setfont [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 ! get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop pop aload pop M} ifelse }ifelse }ifelse } ifelse } ! forall} def ! /Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def /MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont ! 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def /MLshow { currentpoint stroke M 0 exch R Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def Files octave-3.0.2/doc/interpreter/interpderiv2.pdf and octave-3.0.3/doc/interpreter/interpderiv2.pdf differ diff -cNr octave-3.0.2/doc/interpreter/interpft.eps octave-3.0.3/doc/interpreter/interpft.eps *** octave-3.0.2/doc/interpreter/interpft.eps 2008-08-14 13:42:54.000000000 +0200 --- octave-3.0.3/doc/interpreter/interpft.eps 2008-09-24 10:31:58.000000000 +0200 *************** *** 1,7 **** %!PS-Adobe-2.0 EPSF-2.0 %%Title: interpft.eps %%Creator: gnuplot 4.2 patchlevel 3 ! %%CreationDate: Thu Aug 14 13:42:54 2008 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments --- 1,7 ---- %!PS-Adobe-2.0 EPSF-2.0 %%Title: interpft.eps %%Creator: gnuplot 4.2 patchlevel 3 ! %%CreationDate: Wed Sep 24 10:31:58 2008 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments *************** *** 48,59 **** /Author (Jaroslav Hajek) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Thu Aug 14 13:42:54 2008) /DOCINFO pdfmark end } ifelse % ! % Gnuplot Prolog Version 4.2 (August 2006) % /M {moveto} bind def /L {lineto} bind def --- 48,59 ---- /Author (Jaroslav Hajek) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Wed Sep 24 10:31:58 2008) /DOCINFO pdfmark end } ifelse % ! % Gnuplot Prolog Version 4.2 (November 2007) % /M {moveto} bind def /L {lineto} bind def *************** *** 63,68 **** --- 63,69 ---- /Z {closepath} bind def /C {setrgbcolor} bind def /f {rlineto fill} bind def + /Gshow {show} def % May be redefined later in the file to support UTF-8 /vpt2 vpt 2 mul def /hpt2 hpt 2 mul def /Lshow {currentpoint stroke M 0 vshift R *************** *** 425,441 **** { 5 get 3 eq {gsave} {grestore} ifelse } {dup dup 0 get findfont exch 1 get scalefont setfont [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 ! get exch 4 get {show} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop pop aload pop M} ifelse }ifelse }ifelse } ifelse } ! forall} bind def /MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont ! 6 get stringwidth pop add} {pop} ifelse} ifelse} forall} bind def /MLshow { currentpoint stroke M 0 exch R Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def --- 426,443 ---- { 5 get 3 eq {gsave} {grestore} ifelse } {dup dup 0 get findfont exch 1 get scalefont setfont [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 ! get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop pop aload pop M} ifelse }ifelse }ifelse } ifelse } ! forall} def ! /Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def /MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont ! 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def /MLshow { currentpoint stroke M 0 exch R Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def Files octave-3.0.2/doc/interpreter/interpft.pdf and octave-3.0.3/doc/interpreter/interpft.pdf differ diff -cNr octave-3.0.2/doc/interpreter/interpn.eps octave-3.0.3/doc/interpreter/interpn.eps *** octave-3.0.2/doc/interpreter/interpn.eps 2008-08-14 13:42:56.000000000 +0200 --- octave-3.0.3/doc/interpreter/interpn.eps 2008-09-24 10:32:00.000000000 +0200 *************** *** 1,7 **** %!PS-Adobe-2.0 EPSF-2.0 %%Title: interpn.eps %%Creator: gnuplot 4.2 patchlevel 3 ! %%CreationDate: Thu Aug 14 13:42:57 2008 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments --- 1,7 ---- %!PS-Adobe-2.0 EPSF-2.0 %%Title: interpn.eps %%Creator: gnuplot 4.2 patchlevel 3 ! %%CreationDate: Wed Sep 24 10:32:00 2008 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments *************** *** 48,59 **** /Author (Jaroslav Hajek) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Thu Aug 14 13:42:57 2008) /DOCINFO pdfmark end } ifelse % ! % Gnuplot Prolog Version 4.2 (August 2006) % /M {moveto} bind def /L {lineto} bind def --- 48,59 ---- /Author (Jaroslav Hajek) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Wed Sep 24 10:32:00 2008) /DOCINFO pdfmark end } ifelse % ! % Gnuplot Prolog Version 4.2 (November 2007) % /M {moveto} bind def /L {lineto} bind def *************** *** 63,68 **** --- 63,69 ---- /Z {closepath} bind def /C {setrgbcolor} bind def /f {rlineto fill} bind def + /Gshow {show} def % May be redefined later in the file to support UTF-8 /vpt2 vpt 2 mul def /hpt2 hpt 2 mul def /Lshow {currentpoint stroke M 0 vshift R *************** *** 425,441 **** { 5 get 3 eq {gsave} {grestore} ifelse } {dup dup 0 get findfont exch 1 get scalefont setfont [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 ! get exch 4 get {show} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop pop aload pop M} ifelse }ifelse }ifelse } ifelse } ! forall} bind def /MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont ! 6 get stringwidth pop add} {pop} ifelse} ifelse} forall} bind def /MLshow { currentpoint stroke M 0 exch R Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def --- 426,443 ---- { 5 get 3 eq {gsave} {grestore} ifelse } {dup dup 0 get findfont exch 1 get scalefont setfont [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 ! get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop pop aload pop M} ifelse }ifelse }ifelse } ifelse } ! forall} def ! /Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def /MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont ! 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def /MLshow { currentpoint stroke M 0 exch R Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def Files octave-3.0.2/doc/interpreter/interpn.pdf and octave-3.0.3/doc/interpreter/interpn.pdf differ diff -cNr octave-3.0.2/doc/interpreter/interp.texi octave-3.0.3/doc/interpreter/interp.texi *** octave-3.0.2/doc/interpreter/interp.texi 2008-08-20 07:51:19.000000000 +0200 --- octave-3.0.3/doc/interpreter/interp.texi 2008-10-03 12:17:35.000000000 +0200 *************** *** 442,450 **** The default method is 'linear'. ! If @var{extrap} is the string 'extrap', then extrapolate values beyond ! the endpoints. If @var{extrap} is a number, replace values beyond the ! endpoints with that number. If @var{extrap} is missing, assume NA. @seealso{interp1, interp2, spline, ndgrid} @end deftypefn --- 442,450 ---- The default method is 'linear'. ! If @var{extrapval} is the scalar value, use it to replace the values ! beyond the endpoints with that number. If @var{extrapval} is missing, ! assume NA. @seealso{interp1, interp2, spline, ndgrid} @end deftypefn diff -cNr octave-3.0.2/doc/interpreter/matrix.texi octave-3.0.3/doc/interpreter/matrix.texi *** octave-3.0.2/doc/interpreter/matrix.texi 2008-08-20 07:51:20.000000000 +0200 --- octave-3.0.3/doc/interpreter/matrix.texi 2008-10-03 12:17:35.000000000 +0200 *************** *** 979,986 **** @deftypefnx {Loadable Function} {} randn (@var{n}, @var{m}) @deftypefnx {Loadable Function} {} randn ("state", @var{x}) @deftypefnx {Loadable Function} {} randn ("seed", @var{x}) ! Return a matrix with normally distributed random elements. The ! arguments are handled the same as the arguments for @code{rand}. By default, @code{randn} uses a Marsaglia and Tsang Ziggurat technique to transform from a uniform to a normal distribution. (G. Marsaglia and --- 979,987 ---- @deftypefnx {Loadable Function} {} randn (@var{n}, @var{m}) @deftypefnx {Loadable Function} {} randn ("state", @var{x}) @deftypefnx {Loadable Function} {} randn ("seed", @var{x}) ! Return a matrix with normally distributed pseudo-random ! elements having zero mean and variance one. The arguments are ! handled the same as the arguments for @code{rand}. By default, @code{randn} uses a Marsaglia and Tsang Ziggurat technique to transform from a uniform to a normal distribution. (G. Marsaglia and diff -cNr octave-3.0.2/doc/interpreter/mesh.eps octave-3.0.3/doc/interpreter/mesh.eps *** octave-3.0.2/doc/interpreter/mesh.eps 2008-08-14 13:43:25.000000000 +0200 --- octave-3.0.3/doc/interpreter/mesh.eps 2008-09-24 10:32:26.000000000 +0200 *************** *** 1,7 **** %!PS-Adobe-2.0 EPSF-2.0 %%Title: mesh.eps %%Creator: gnuplot 4.2 patchlevel 3 ! %%CreationDate: Thu Aug 14 13:43:25 2008 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments --- 1,7 ---- %!PS-Adobe-2.0 EPSF-2.0 %%Title: mesh.eps %%Creator: gnuplot 4.2 patchlevel 3 ! %%CreationDate: Wed Sep 24 10:32:26 2008 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments *************** *** 48,59 **** /Author (Jaroslav Hajek) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Thu Aug 14 13:43:25 2008) /DOCINFO pdfmark end } ifelse % ! % Gnuplot Prolog Version 4.2 (August 2006) % /M {moveto} bind def /L {lineto} bind def --- 48,59 ---- /Author (Jaroslav Hajek) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Wed Sep 24 10:32:26 2008) /DOCINFO pdfmark end } ifelse % ! % Gnuplot Prolog Version 4.2 (November 2007) % /M {moveto} bind def /L {lineto} bind def *************** *** 63,68 **** --- 63,69 ---- /Z {closepath} bind def /C {setrgbcolor} bind def /f {rlineto fill} bind def + /Gshow {show} def % May be redefined later in the file to support UTF-8 /vpt2 vpt 2 mul def /hpt2 hpt 2 mul def /Lshow {currentpoint stroke M 0 vshift R *************** *** 425,441 **** { 5 get 3 eq {gsave} {grestore} ifelse } {dup dup 0 get findfont exch 1 get scalefont setfont [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 ! get exch 4 get {show} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop pop aload pop M} ifelse }ifelse }ifelse } ifelse } ! forall} bind def /MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont ! 6 get stringwidth pop add} {pop} ifelse} ifelse} forall} bind def /MLshow { currentpoint stroke M 0 exch R Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def --- 426,443 ---- { 5 get 3 eq {gsave} {grestore} ifelse } {dup dup 0 get findfont exch 1 get scalefont setfont [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 ! get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop pop aload pop M} ifelse }ifelse }ifelse } ifelse } ! forall} def ! /Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def /MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont ! 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def /MLshow { currentpoint stroke M 0 exch R Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def Files octave-3.0.2/doc/interpreter/mesh.pdf and octave-3.0.3/doc/interpreter/mesh.pdf differ Files octave-3.0.2/doc/interpreter/octave-a4.pdf and octave-3.0.3/doc/interpreter/octave-a4.pdf differ Files octave-3.0.2/doc/interpreter/octave.pdf and octave-3.0.3/doc/interpreter/octave.pdf differ diff -cNr octave-3.0.2/doc/interpreter/plot3.eps octave-3.0.3/doc/interpreter/plot3.eps *** octave-3.0.2/doc/interpreter/plot3.eps 2008-08-14 13:43:27.000000000 +0200 --- octave-3.0.3/doc/interpreter/plot3.eps 2008-09-24 10:32:28.000000000 +0200 *************** *** 1,7 **** %!PS-Adobe-2.0 EPSF-2.0 %%Title: plot3.eps %%Creator: gnuplot 4.2 patchlevel 3 ! %%CreationDate: Thu Aug 14 13:43:27 2008 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments --- 1,7 ---- %!PS-Adobe-2.0 EPSF-2.0 %%Title: plot3.eps %%Creator: gnuplot 4.2 patchlevel 3 ! %%CreationDate: Wed Sep 24 10:32:28 2008 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments *************** *** 48,59 **** /Author (Jaroslav Hajek) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Thu Aug 14 13:43:27 2008) /DOCINFO pdfmark end } ifelse % ! % Gnuplot Prolog Version 4.2 (August 2006) % /M {moveto} bind def /L {lineto} bind def --- 48,59 ---- /Author (Jaroslav Hajek) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Wed Sep 24 10:32:28 2008) /DOCINFO pdfmark end } ifelse % ! % Gnuplot Prolog Version 4.2 (November 2007) % /M {moveto} bind def /L {lineto} bind def *************** *** 63,68 **** --- 63,69 ---- /Z {closepath} bind def /C {setrgbcolor} bind def /f {rlineto fill} bind def + /Gshow {show} def % May be redefined later in the file to support UTF-8 /vpt2 vpt 2 mul def /hpt2 hpt 2 mul def /Lshow {currentpoint stroke M 0 vshift R *************** *** 425,441 **** { 5 get 3 eq {gsave} {grestore} ifelse } {dup dup 0 get findfont exch 1 get scalefont setfont [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 ! get exch 4 get {show} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop pop aload pop M} ifelse }ifelse }ifelse } ifelse } ! forall} bind def /MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont ! 6 get stringwidth pop add} {pop} ifelse} ifelse} forall} bind def /MLshow { currentpoint stroke M 0 exch R Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def --- 426,443 ---- { 5 get 3 eq {gsave} {grestore} ifelse } {dup dup 0 get findfont exch 1 get scalefont setfont [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 ! get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop pop aload pop M} ifelse }ifelse }ifelse } ifelse } ! forall} def ! /Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def /MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont ! 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def /MLshow { currentpoint stroke M 0 exch R Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def Files octave-3.0.2/doc/interpreter/plot3.pdf and octave-3.0.3/doc/interpreter/plot3.pdf differ diff -cNr octave-3.0.2/doc/interpreter/plot.eps octave-3.0.3/doc/interpreter/plot.eps *** octave-3.0.2/doc/interpreter/plot.eps 2008-08-14 13:43:17.000000000 +0200 --- octave-3.0.3/doc/interpreter/plot.eps 2008-09-24 10:32:18.000000000 +0200 *************** *** 1,7 **** %!PS-Adobe-2.0 EPSF-2.0 %%Title: plot.eps %%Creator: gnuplot 4.2 patchlevel 3 ! %%CreationDate: Thu Aug 14 13:43:17 2008 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments --- 1,7 ---- %!PS-Adobe-2.0 EPSF-2.0 %%Title: plot.eps %%Creator: gnuplot 4.2 patchlevel 3 ! %%CreationDate: Wed Sep 24 10:32:18 2008 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments *************** *** 48,59 **** /Author (Jaroslav Hajek) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Thu Aug 14 13:43:17 2008) /DOCINFO pdfmark end } ifelse % ! % Gnuplot Prolog Version 4.2 (August 2006) % /M {moveto} bind def /L {lineto} bind def --- 48,59 ---- /Author (Jaroslav Hajek) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Wed Sep 24 10:32:18 2008) /DOCINFO pdfmark end } ifelse % ! % Gnuplot Prolog Version 4.2 (November 2007) % /M {moveto} bind def /L {lineto} bind def *************** *** 63,68 **** --- 63,69 ---- /Z {closepath} bind def /C {setrgbcolor} bind def /f {rlineto fill} bind def + /Gshow {show} def % May be redefined later in the file to support UTF-8 /vpt2 vpt 2 mul def /hpt2 hpt 2 mul def /Lshow {currentpoint stroke M 0 vshift R *************** *** 425,441 **** { 5 get 3 eq {gsave} {grestore} ifelse } {dup dup 0 get findfont exch 1 get scalefont setfont [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 ! get exch 4 get {show} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop pop aload pop M} ifelse }ifelse }ifelse } ifelse } ! forall} bind def /MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont ! 6 get stringwidth pop add} {pop} ifelse} ifelse} forall} bind def /MLshow { currentpoint stroke M 0 exch R Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def --- 426,443 ---- { 5 get 3 eq {gsave} {grestore} ifelse } {dup dup 0 get findfont exch 1 get scalefont setfont [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 ! get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop pop aload pop M} ifelse }ifelse }ifelse } ifelse } ! forall} def ! /Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def /MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont ! 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def /MLshow { currentpoint stroke M 0 exch R Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def Files octave-3.0.2/doc/interpreter/plot.pdf and octave-3.0.3/doc/interpreter/plot.pdf differ diff -cNr octave-3.0.2/doc/interpreter/plot.texi octave-3.0.3/doc/interpreter/plot.texi *** octave-3.0.2/doc/interpreter/plot.texi 2008-08-20 07:51:20.000000000 +0200 --- octave-3.0.3/doc/interpreter/plot.texi 2008-10-03 12:17:36.000000000 +0200 *************** *** 172,180 **** @item . Set dots plot style. - @item ^ - Set impulses plot style. - @item L Set steps plot style. --- 172,177 ---- *************** *** 199,204 **** --- 196,202 ---- @itemx * @itemx o @itemx x + @itemx ^ Used in combination with the points or linespoints styles, set the point style. @end table *************** *** 500,507 **** @end deftypefn ! The @code{contour} and @code{contourc} functions produce two-dimensional ! contour plots from three dimensional data. @anchor{doc-contour} @deftypefn {Function File} {} contour (@var{z}) --- 498,505 ---- @end deftypefn ! The @code{contour}, @code{contourf} and @code{contourc} functions ! produce two-dimensional contour plots from three dimensional data. @anchor{doc-contour} @deftypefn {Function File} {} contour (@var{z}) *************** *** 536,541 **** --- 534,577 ---- @end deftypefn + @anchor{doc-contourf} + @deftypefn {Function File} {[@var{c}, @var{h}] =} contourf (@var{x}, @var{y}, @var{z}, @var{lvl}) + @deftypefnx {Function File} {[@var{c}, @var{h}] =} contourf (@var{x}, @var{y}, @var{z}, @var{n}) + @deftypefnx {Function File} {[@var{c}, @var{h}] =} contourf (@var{x}, @var{y}, @var{z}) + @deftypefnx {Function File} {[@var{c}, @var{h}] =} contourf (@var{z}, @var{n}) + @deftypefnx {Function File} {[@var{c}, @var{h}] =} contourf (@var{z}, @var{lvl}) + @deftypefnx {Function File} {[@var{c}, @var{h}] =} contourf (@var{z}) + @deftypefnx {Function File} {[@var{c}, @var{h}] =} contourf (@var{ax}, @dots{}) + @deftypefnx {Function File} {[@var{c}, @var{h}] =} contourf (@dots{}, @var{"property"}, @var{val}) + Compute and plot filled contours of the matrix @var{z}. + Parameters @var{x}, @var{y} and @var{n} or @var{lvl} are optional. + + The return value @var{c} is a 2xn matrix containing the contour lines + as described in the help to the contourc function. + + The return value @var{h} is handle-vector to the patch objects creating + the filled contours. + + If @var{x} and @var{y} are ommited they are taken as the row/column + index of @var{z}. @var{n} is a scalar denoting the number of lines + to compute. Alternatively @var{lvl} is a vector containing the + contour levels. If only one value (e.g. lvl0) is wanted, set + @var{lvl} to [lvl0, lvl0]. If both @var{n} or @var{lvl} are omitted + a default value of 10 contour level is assumed. + + If provided, the filled contours are added to the axes object + @var{ax} instead of the current axis. + + The following example plots filled contours of the @code{peaks} + function. + @example + [x, y, z] = peaks (50); + contourf (x, y, z, -7:9) + @end example + @seealso{contour, contourc, patch} + @end deftypefn + + @anchor{doc-contourc} @deftypefn {Function File} {[@var{c}, @var{lev}] =} contourc (@var{x}, @var{y}, @var{z}, @var{vn}) Compute isolines (countour lines) of the matrix @var{z}. *************** *** 838,848 **** @deftypefnx {Function File} {} pcolor (@var{c}) Density plot for given matrices @var{x}, and @var{y} from @code{meshgrid} and a matrix @var{c} corresponding to the @var{x} and @var{y} coordinates of ! the mesh. If @var{x} and @var{y} are vectors, then a typical vertex is (@var{x}(j), @var{y}(i), @var{c}(i,j)). Thus, columns of @var{c} correspond to different @var{x} values and rows of @var{c} correspond to different @var{y} values. ! @seealso{meshgrid, contour} @end deftypefn --- 874,902 ---- @deftypefnx {Function File} {} pcolor (@var{c}) Density plot for given matrices @var{x}, and @var{y} from @code{meshgrid} and a matrix @var{c} corresponding to the @var{x} and @var{y} coordinates of ! the mesh's vertices. If @var{x} and @var{y} are vectors, then a typical vertex is (@var{x}(j), @var{y}(i), @var{c}(i,j)). Thus, columns of @var{c} correspond to different @var{x} values and rows of @var{c} correspond to different @var{y} values. ! ! The @code{colormap} is scaled to the extents of @var{c}. ! Limits may be placed on the color axis by the ! command @code{caxis}, or by setting the @code{clim} property of the ! parent axis. ! ! The face color of each cell of the mesh is determined by interpolating ! the values of @var{c} for the cell's vertices. Contrast this with ! @code{imagesc} which renders one cell for each element of @var{c}. ! ! @code{shading} modifies an attribute determining the manner by which the ! face color of each cell is interpolated from the values of @var{c}, ! and the visibility of the cells' edges. By default the attribute is ! "faceted", which renders a single color for each cell's face with the edge ! visible. ! ! @var{h} is the handle to the surface object. ! ! @seealso{caxis, contour, meshgrid, imagesc, shading} @end deftypefn *************** *** 1211,1219 **** @deftypefn {Function File} {} shading (@var{type}) @deftypefnx {Function File} {} shading (@var{ax}, @dots{}) Set the shading of surface or patch graphic objects. Valid arguments ! for @var{type} are @code{"flat"}, @code{"interp"}, or ! @code{"faceted"}. If @var{ax} is given the shading is applied to ! axis @var{ax} instead of the current axis. @end deftypefn --- 1265,1286 ---- @deftypefn {Function File} {} shading (@var{type}) @deftypefnx {Function File} {} shading (@var{ax}, @dots{}) Set the shading of surface or patch graphic objects. Valid arguments ! for @var{type} are ! ! @table @code ! @item "flat" ! Single colored patches with invisible edges. ! ! @item "faceted" ! Single colored patches with visible edges. ! ! @item "interp" ! Color between patch vertices are interpolated and the patch edges are ! invisible. ! @end table ! ! If @var{ax} is given the shading is applied to axis @var{ax} instead ! of the current axis. @end deftypefn *************** *** 1353,1358 **** --- 1420,1456 ---- @end deftypefn + @anchor{doc-colorbar} + @deftypefn {Function File} {} colorbar (@var{s}) + @deftypefnx {Function File} {} colorbar ('peer', @var{h}, @dots{}) + Adds a colorbar to the current axes. Valid values for @var{s} are + + @table @asis + @item 'EastOutside' + Place the colorbar outside the plot to the right. This is the default. + @item 'East' + Place the colorbar inside the plot to the right. + @item 'WestOutside' + Place the colorbar outside the plot to the left. + @item 'West' + Place the colorbar inside the plot to the left. + @item 'NorthOutside' + Place the colorbar above the plot. + @item 'North' + Place the colorbar at the top of the plot. + @item 'SouthOutside' + Place the colorbar under the plot. + @item 'South' + Place the colorbar at the bottom of the plot. + @item 'Off', 'None' + Remove any existing colorbar from the plot. + @end table + + If the argument 'peer' is given, then the following argument is treated + as the axes handle on which to add the colorbar. + @end deftypefn + + @node Multiple Plots on One Page @subsection Multiple Plots on One Page *************** *** 2198,2207 **** @item outerposition A four-element vector specifying the coordinates of the lower left ! corner and width and height of the plot, in normalized units. For ! example, @code{[0.2, 0.3, 0.4, 0.5]} sets the lower left corner of the ! axes at @math{(0.2, 0.3)} and the width and height to be 0.4 and 0.5 ! respectively. @end table @node Line Properties --- 2296,2305 ---- @item outerposition A four-element vector specifying the coordinates of the lower left ! corner and width and height of the plot, in normalized units including ! the tics, labels etc. For example, @code{[0.2, 0.3, 0.4, 0.5]} sets the ! lower left corner of the axes at @math{(0.2, 0.3)} and the width and ! height to be 0.4 and 0.5 respectively. @end table @node Line Properties diff -cNr octave-3.0.2/doc/interpreter/plot.txi octave-3.0.3/doc/interpreter/plot.txi *** octave-3.0.2/doc/interpreter/plot.txi 2008-08-01 08:50:55.000000000 +0200 --- octave-3.0.3/doc/interpreter/plot.txi 2008-09-24 09:13:46.000000000 +0200 *************** *** 123,133 **** @DOCSTRING(stem) ! The @code{contour} and @code{contourc} functions produce two-dimensional ! contour plots from three dimensional data. @DOCSTRING(contour) @DOCSTRING(contourc) The @code{errorbar}, @code{semilogxerr}, @code{semilogyerr}, and --- 123,135 ---- @DOCSTRING(stem) ! The @code{contour}, @code{contourf} and @code{contourc} functions ! produce two-dimensional contour plots from three dimensional data. @DOCSTRING(contour) + @DOCSTRING(contourf) + @DOCSTRING(contourc) The @code{errorbar}, @code{semilogxerr}, @code{semilogyerr}, and *************** *** 300,305 **** --- 302,309 ---- @DOCSTRING(grid) + @DOCSTRING(colorbar) + @node Multiple Plots on One Page @subsection Multiple Plots on One Page *************** *** 750,759 **** @item outerposition A four-element vector specifying the coordinates of the lower left ! corner and width and height of the plot, in normalized units. For ! example, @code{[0.2, 0.3, 0.4, 0.5]} sets the lower left corner of the ! axes at @math{(0.2, 0.3)} and the width and height to be 0.4 and 0.5 ! respectively. @end table @node Line Properties --- 754,763 ---- @item outerposition A four-element vector specifying the coordinates of the lower left ! corner and width and height of the plot, in normalized units including ! the tics, labels etc. For example, @code{[0.2, 0.3, 0.4, 0.5]} sets the ! lower left corner of the axes at @math{(0.2, 0.3)} and the width and ! height to be 0.4 and 0.5 respectively. @end table @node Line Properties diff -cNr octave-3.0.2/doc/interpreter/polar.eps octave-3.0.3/doc/interpreter/polar.eps *** octave-3.0.2/doc/interpreter/polar.eps 2008-08-14 13:43:23.000000000 +0200 --- octave-3.0.3/doc/interpreter/polar.eps 2008-09-24 10:32:24.000000000 +0200 *************** *** 1,7 **** %!PS-Adobe-2.0 EPSF-2.0 %%Title: polar.eps %%Creator: gnuplot 4.2 patchlevel 3 ! %%CreationDate: Thu Aug 14 13:43:23 2008 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments --- 1,7 ---- %!PS-Adobe-2.0 EPSF-2.0 %%Title: polar.eps %%Creator: gnuplot 4.2 patchlevel 3 ! %%CreationDate: Wed Sep 24 10:32:24 2008 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments *************** *** 48,59 **** /Author (Jaroslav Hajek) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Thu Aug 14 13:43:23 2008) /DOCINFO pdfmark end } ifelse % ! % Gnuplot Prolog Version 4.2 (August 2006) % /M {moveto} bind def /L {lineto} bind def --- 48,59 ---- /Author (Jaroslav Hajek) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Wed Sep 24 10:32:24 2008) /DOCINFO pdfmark end } ifelse % ! % Gnuplot Prolog Version 4.2 (November 2007) % /M {moveto} bind def /L {lineto} bind def *************** *** 63,68 **** --- 63,69 ---- /Z {closepath} bind def /C {setrgbcolor} bind def /f {rlineto fill} bind def + /Gshow {show} def % May be redefined later in the file to support UTF-8 /vpt2 vpt 2 mul def /hpt2 hpt 2 mul def /Lshow {currentpoint stroke M 0 vshift R *************** *** 425,441 **** { 5 get 3 eq {gsave} {grestore} ifelse } {dup dup 0 get findfont exch 1 get scalefont setfont [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 ! get exch 4 get {show} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop pop aload pop M} ifelse }ifelse }ifelse } ifelse } ! forall} bind def /MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont ! 6 get stringwidth pop add} {pop} ifelse} ifelse} forall} bind def /MLshow { currentpoint stroke M 0 exch R Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def --- 426,443 ---- { 5 get 3 eq {gsave} {grestore} ifelse } {dup dup 0 get findfont exch 1 get scalefont setfont [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 ! get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop pop aload pop M} ifelse }ifelse }ifelse } ifelse } ! forall} def ! /Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def /MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont ! 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def /MLshow { currentpoint stroke M 0 exch R Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def Files octave-3.0.2/doc/interpreter/polar.pdf and octave-3.0.3/doc/interpreter/polar.pdf differ diff -cNr octave-3.0.2/doc/interpreter/signal.texi octave-3.0.3/doc/interpreter/signal.texi *** octave-3.0.2/doc/interpreter/signal.texi 2008-08-20 07:51:21.000000000 +0200 --- octave-3.0.3/doc/interpreter/signal.texi 2008-10-03 12:17:36.000000000 +0200 *************** *** 63,79 **** Manage FFTW wisdom data. Wisdom data can be used to significantly accelerate the calculation of the FFTs but implies an initial cost ! in its calculation. The wisdom used by Octave can be imported directly, ! usually from a file /etc/fftw/wisdom, or @dfn{fftw} can be used ! to import wisdom. For example @example @var{wisdom} = fftw ('dwisdom') @end example will save the existing wisdom used by Octave to the string @var{wisdom}. ! This string can then be saved in the usual manner. This existing wisdom ! can be reimported as follows @example fftw ('dwisdom', @var{wisdom}) --- 63,81 ---- Manage FFTW wisdom data. Wisdom data can be used to significantly accelerate the calculation of the FFTs but implies an initial cost ! in its calculation. When the FFTW libraries are initialized, they read ! a system wide wisdom file (typically in @file{/etc/fftw/wisdom}), allowing wisdom ! to be shared between applications other than Octave. Alternatively, the ! @code{fftw} function can be used to import wisdom. For example @example @var{wisdom} = fftw ('dwisdom') @end example will save the existing wisdom used by Octave to the string @var{wisdom}. ! This string can then be saved to a file and restored using the @code{save} ! and @code{load} commands respectively. This existing wisdom can be reimported ! as follows @example fftw ('dwisdom', @var{wisdom}) *************** *** 83,89 **** During the calculation of fourier transforms further wisdom is generated. The fashion in which this wisdom is generated is equally controlled by ! the @dfn{fftw} function. There are five different manners in which the wisdom can be treated, these being @table @asis --- 85,91 ---- During the calculation of fourier transforms further wisdom is generated. The fashion in which this wisdom is generated is equally controlled by ! the @code{fftw} function. There are five different manners in which the wisdom can be treated, these being @table @asis *************** *** 126,135 **** Note that calculated wisdom will be lost when restarting Octave. However, the wisdom data can be reloaded if it is saved to a file as described ! above. Also, any system-wide wisdom file that has been found will ! also be used. Saved wisdom files should not be used on different ! platforms since they will not be efficient and the point of calculating ! the wisdom is lost. @seealso{fft, ifft, fft2, ifft2, fftn, ifftn} @end deftypefn --- 128,135 ---- Note that calculated wisdom will be lost when restarting Octave. However, the wisdom data can be reloaded if it is saved to a file as described ! above. Saved wisdom files should not be used on different platforms since ! they will not be efficient and the point of calculating the wisdom is lost. @seealso{fft, ifft, fft2, ifft2, fftn, ifftn} @end deftypefn diff -cNr octave-3.0.2/doc/interpreter/spchol.eps octave-3.0.3/doc/interpreter/spchol.eps *** octave-3.0.2/doc/interpreter/spchol.eps 2008-08-14 13:42:49.000000000 +0200 --- octave-3.0.3/doc/interpreter/spchol.eps 2008-09-24 10:31:53.000000000 +0200 *************** *** 1,7 **** %!PS-Adobe-2.0 EPSF-2.0 %%Title: spchol.eps %%Creator: gnuplot 4.2 patchlevel 3 ! %%CreationDate: Thu Aug 14 13:42:49 2008 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments --- 1,7 ---- %!PS-Adobe-2.0 EPSF-2.0 %%Title: spchol.eps %%Creator: gnuplot 4.2 patchlevel 3 ! %%CreationDate: Wed Sep 24 10:31:53 2008 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments *************** *** 48,59 **** /Author (Jaroslav Hajek) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Thu Aug 14 13:42:49 2008) /DOCINFO pdfmark end } ifelse % ! % Gnuplot Prolog Version 4.2 (August 2006) % /M {moveto} bind def /L {lineto} bind def --- 48,59 ---- /Author (Jaroslav Hajek) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Wed Sep 24 10:31:53 2008) /DOCINFO pdfmark end } ifelse % ! % Gnuplot Prolog Version 4.2 (November 2007) % /M {moveto} bind def /L {lineto} bind def *************** *** 63,68 **** --- 63,69 ---- /Z {closepath} bind def /C {setrgbcolor} bind def /f {rlineto fill} bind def + /Gshow {show} def % May be redefined later in the file to support UTF-8 /vpt2 vpt 2 mul def /hpt2 hpt 2 mul def /Lshow {currentpoint stroke M 0 vshift R *************** *** 425,441 **** { 5 get 3 eq {gsave} {grestore} ifelse } {dup dup 0 get findfont exch 1 get scalefont setfont [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 ! get exch 4 get {show} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop pop aload pop M} ifelse }ifelse }ifelse } ifelse } ! forall} bind def /MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont ! 6 get stringwidth pop add} {pop} ifelse} ifelse} forall} bind def /MLshow { currentpoint stroke M 0 exch R Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def --- 426,443 ---- { 5 get 3 eq {gsave} {grestore} ifelse } {dup dup 0 get findfont exch 1 get scalefont setfont [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 ! get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop pop aload pop M} ifelse }ifelse }ifelse } ifelse } ! forall} def ! /Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def /MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont ! 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def /MLshow { currentpoint stroke M 0 exch R Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def Files octave-3.0.2/doc/interpreter/spchol.pdf and octave-3.0.3/doc/interpreter/spchol.pdf differ diff -cNr octave-3.0.2/doc/interpreter/spcholperm.eps octave-3.0.3/doc/interpreter/spcholperm.eps *** octave-3.0.2/doc/interpreter/spcholperm.eps 2008-08-14 13:42:52.000000000 +0200 --- octave-3.0.3/doc/interpreter/spcholperm.eps 2008-09-24 10:31:56.000000000 +0200 *************** *** 1,7 **** %!PS-Adobe-2.0 EPSF-2.0 %%Title: spcholperm.eps %%Creator: gnuplot 4.2 patchlevel 3 ! %%CreationDate: Thu Aug 14 13:42:52 2008 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments --- 1,7 ---- %!PS-Adobe-2.0 EPSF-2.0 %%Title: spcholperm.eps %%Creator: gnuplot 4.2 patchlevel 3 ! %%CreationDate: Wed Sep 24 10:31:56 2008 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments *************** *** 48,59 **** /Author (Jaroslav Hajek) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Thu Aug 14 13:42:52 2008) /DOCINFO pdfmark end } ifelse % ! % Gnuplot Prolog Version 4.2 (August 2006) % /M {moveto} bind def /L {lineto} bind def --- 48,59 ---- /Author (Jaroslav Hajek) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Wed Sep 24 10:31:56 2008) /DOCINFO pdfmark end } ifelse % ! % Gnuplot Prolog Version 4.2 (November 2007) % /M {moveto} bind def /L {lineto} bind def *************** *** 63,68 **** --- 63,69 ---- /Z {closepath} bind def /C {setrgbcolor} bind def /f {rlineto fill} bind def + /Gshow {show} def % May be redefined later in the file to support UTF-8 /vpt2 vpt 2 mul def /hpt2 hpt 2 mul def /Lshow {currentpoint stroke M 0 vshift R *************** *** 425,441 **** { 5 get 3 eq {gsave} {grestore} ifelse } {dup dup 0 get findfont exch 1 get scalefont setfont [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 ! get exch 4 get {show} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop pop aload pop M} ifelse }ifelse }ifelse } ifelse } ! forall} bind def /MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont ! 6 get stringwidth pop add} {pop} ifelse} ifelse} forall} bind def /MLshow { currentpoint stroke M 0 exch R Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def --- 426,443 ---- { 5 get 3 eq {gsave} {grestore} ifelse } {dup dup 0 get findfont exch 1 get scalefont setfont [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 ! get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop pop aload pop M} ifelse }ifelse }ifelse } ifelse } ! forall} def ! /Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def /MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont ! 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def /MLshow { currentpoint stroke M 0 exch R Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def Files octave-3.0.2/doc/interpreter/spcholperm.pdf and octave-3.0.3/doc/interpreter/spcholperm.pdf differ diff -cNr octave-3.0.2/doc/interpreter/spmatrix.eps octave-3.0.3/doc/interpreter/spmatrix.eps *** octave-3.0.2/doc/interpreter/spmatrix.eps 2008-08-14 13:42:47.000000000 +0200 --- octave-3.0.3/doc/interpreter/spmatrix.eps 2008-09-24 10:31:51.000000000 +0200 *************** *** 1,7 **** %!PS-Adobe-2.0 EPSF-2.0 %%Title: spmatrix.eps %%Creator: gnuplot 4.2 patchlevel 3 ! %%CreationDate: Thu Aug 14 13:42:47 2008 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments --- 1,7 ---- %!PS-Adobe-2.0 EPSF-2.0 %%Title: spmatrix.eps %%Creator: gnuplot 4.2 patchlevel 3 ! %%CreationDate: Wed Sep 24 10:31:51 2008 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments *************** *** 48,59 **** /Author (Jaroslav Hajek) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Thu Aug 14 13:42:47 2008) /DOCINFO pdfmark end } ifelse % ! % Gnuplot Prolog Version 4.2 (August 2006) % /M {moveto} bind def /L {lineto} bind def --- 48,59 ---- /Author (Jaroslav Hajek) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Wed Sep 24 10:31:51 2008) /DOCINFO pdfmark end } ifelse % ! % Gnuplot Prolog Version 4.2 (November 2007) % /M {moveto} bind def /L {lineto} bind def *************** *** 63,68 **** --- 63,69 ---- /Z {closepath} bind def /C {setrgbcolor} bind def /f {rlineto fill} bind def + /Gshow {show} def % May be redefined later in the file to support UTF-8 /vpt2 vpt 2 mul def /hpt2 hpt 2 mul def /Lshow {currentpoint stroke M 0 vshift R *************** *** 425,441 **** { 5 get 3 eq {gsave} {grestore} ifelse } {dup dup 0 get findfont exch 1 get scalefont setfont [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 ! get exch 4 get {show} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop pop aload pop M} ifelse }ifelse }ifelse } ifelse } ! forall} bind def /MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont ! 6 get stringwidth pop add} {pop} ifelse} ifelse} forall} bind def /MLshow { currentpoint stroke M 0 exch R Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def --- 426,443 ---- { 5 get 3 eq {gsave} {grestore} ifelse } {dup dup 0 get findfont exch 1 get scalefont setfont [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 ! get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop pop aload pop M} ifelse }ifelse }ifelse } ifelse } ! forall} def ! /Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def /MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont ! 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def /MLshow { currentpoint stroke M 0 exch R Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def Files octave-3.0.2/doc/interpreter/spmatrix.pdf and octave-3.0.3/doc/interpreter/spmatrix.pdf differ diff -cNr octave-3.0.2/doc/interpreter/stats.texi octave-3.0.3/doc/interpreter/stats.texi *** octave-3.0.2/doc/interpreter/stats.texi 2008-08-20 07:51:21.000000000 +0200 --- octave-3.0.3/doc/interpreter/stats.texi 2008-10-03 12:17:36.000000000 +0200 *************** *** 520,530 **** @anchor{doc-ranks} @deftypefn {Function File} {} ranks (@var{x}, @var{dim}) ! If @var{x} is a vector, return the (column) vector of ranks of ! @var{x} adjusted for ties. ! ! If @var{x} is a matrix, do the above for along the first ! non-singleton dimension. If the optional argument @var{dim} is given, operate along this dimension. @end deftypefn --- 520,527 ---- @anchor{doc-ranks} @deftypefn {Function File} {} ranks (@var{x}, @var{dim}) ! Return the ranks of @var{x} along the first non-singleton dimension ! adjust for ties. If the optional argument @var{dim} is given, operate along this dimension. @end deftypefn diff -cNr octave-3.0.2/doc/interpreter/triplot.eps octave-3.0.3/doc/interpreter/triplot.eps *** octave-3.0.2/doc/interpreter/triplot.eps 2008-08-14 13:43:05.000000000 +0200 --- octave-3.0.3/doc/interpreter/triplot.eps 2008-09-24 10:32:08.000000000 +0200 *************** *** 1,7 **** %!PS-Adobe-2.0 EPSF-2.0 %%Title: triplot.eps %%Creator: gnuplot 4.2 patchlevel 3 ! %%CreationDate: Thu Aug 14 13:43:06 2008 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments --- 1,7 ---- %!PS-Adobe-2.0 EPSF-2.0 %%Title: triplot.eps %%Creator: gnuplot 4.2 patchlevel 3 ! %%CreationDate: Wed Sep 24 10:32:08 2008 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments *************** *** 48,59 **** /Author (Jaroslav Hajek) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Thu Aug 14 13:43:06 2008) /DOCINFO pdfmark end } ifelse % ! % Gnuplot Prolog Version 4.2 (August 2006) % /M {moveto} bind def /L {lineto} bind def --- 48,59 ---- /Author (Jaroslav Hajek) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Wed Sep 24 10:32:08 2008) /DOCINFO pdfmark end } ifelse % ! % Gnuplot Prolog Version 4.2 (November 2007) % /M {moveto} bind def /L {lineto} bind def *************** *** 63,68 **** --- 63,69 ---- /Z {closepath} bind def /C {setrgbcolor} bind def /f {rlineto fill} bind def + /Gshow {show} def % May be redefined later in the file to support UTF-8 /vpt2 vpt 2 mul def /hpt2 hpt 2 mul def /Lshow {currentpoint stroke M 0 vshift R *************** *** 425,441 **** { 5 get 3 eq {gsave} {grestore} ifelse } {dup dup 0 get findfont exch 1 get scalefont setfont [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 ! get exch 4 get {show} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop pop aload pop M} ifelse }ifelse }ifelse } ifelse } ! forall} bind def /MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont ! 6 get stringwidth pop add} {pop} ifelse} ifelse} forall} bind def /MLshow { currentpoint stroke M 0 exch R Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def --- 426,443 ---- { 5 get 3 eq {gsave} {grestore} ifelse } {dup dup 0 get findfont exch 1 get scalefont setfont [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 ! get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop pop aload pop M} ifelse }ifelse }ifelse } ifelse } ! forall} def ! /Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def /MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont ! 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def /MLshow { currentpoint stroke M 0 exch R Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def Files octave-3.0.2/doc/interpreter/triplot.pdf and octave-3.0.3/doc/interpreter/triplot.pdf differ diff -cNr octave-3.0.2/doc/interpreter/voronoi.eps octave-3.0.3/doc/interpreter/voronoi.eps *** octave-3.0.2/doc/interpreter/voronoi.eps 2008-08-14 13:43:03.000000000 +0200 --- octave-3.0.3/doc/interpreter/voronoi.eps 2008-09-24 10:32:06.000000000 +0200 *************** *** 1,7 **** %!PS-Adobe-2.0 EPSF-2.0 %%Title: voronoi.eps %%Creator: gnuplot 4.2 patchlevel 3 ! %%CreationDate: Thu Aug 14 13:43:04 2008 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments --- 1,7 ---- %!PS-Adobe-2.0 EPSF-2.0 %%Title: voronoi.eps %%Creator: gnuplot 4.2 patchlevel 3 ! %%CreationDate: Wed Sep 24 10:32:06 2008 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments *************** *** 48,59 **** /Author (Jaroslav Hajek) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Thu Aug 14 13:43:04 2008) /DOCINFO pdfmark end } ifelse % ! % Gnuplot Prolog Version 4.2 (August 2006) % /M {moveto} bind def /L {lineto} bind def --- 48,59 ---- /Author (Jaroslav Hajek) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Wed Sep 24 10:32:06 2008) /DOCINFO pdfmark end } ifelse % ! % Gnuplot Prolog Version 4.2 (November 2007) % /M {moveto} bind def /L {lineto} bind def *************** *** 63,68 **** --- 63,69 ---- /Z {closepath} bind def /C {setrgbcolor} bind def /f {rlineto fill} bind def + /Gshow {show} def % May be redefined later in the file to support UTF-8 /vpt2 vpt 2 mul def /hpt2 hpt 2 mul def /Lshow {currentpoint stroke M 0 vshift R *************** *** 425,441 **** { 5 get 3 eq {gsave} {grestore} ifelse } {dup dup 0 get findfont exch 1 get scalefont setfont [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 ! get exch 4 get {show} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop pop aload pop M} ifelse }ifelse }ifelse } ifelse } ! forall} bind def /MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont ! 6 get stringwidth pop add} {pop} ifelse} ifelse} forall} bind def /MLshow { currentpoint stroke M 0 exch R Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def --- 426,443 ---- { 5 get 3 eq {gsave} {grestore} ifelse } {dup dup 0 get findfont exch 1 get scalefont setfont [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 ! get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop pop aload pop M} ifelse }ifelse }ifelse } ifelse } ! forall} def ! /Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def /MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont ! 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def /MLshow { currentpoint stroke M 0 exch R Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def Files octave-3.0.2/doc/interpreter/voronoi.pdf and octave-3.0.3/doc/interpreter/voronoi.pdf differ Files octave-3.0.2/doc/liboctave/liboctave.pdf and octave-3.0.3/doc/liboctave/liboctave.pdf differ Files octave-3.0.2/doc/refcard/refcard-a4.pdf and octave-3.0.3/doc/refcard/refcard-a4.pdf differ Files octave-3.0.2/doc/refcard/refcard-legal.pdf and octave-3.0.3/doc/refcard/refcard-legal.pdf differ Files octave-3.0.2/doc/refcard/refcard-letter.pdf and octave-3.0.3/doc/refcard/refcard-letter.pdf differ diff -cNr octave-3.0.2/examples/embedded.cc octave-3.0.3/examples/embedded.cc *** octave-3.0.2/examples/embedded.cc 1970-01-01 01:00:00.000000000 +0100 --- octave-3.0.3/examples/embedded.cc 2008-09-24 09:13:46.000000000 +0200 *************** *** 0 **** --- 1,43 ---- + #include + #include + #include + #include + int + main (void) + { + string_vector argv (2); + argv(0) = "embedded"; + argv(1) = "-q"; + + octave_main (2, argv.c_str_vec(), 1); + + octave_idx_type n = 2; + Matrix a_matrix = Matrix (1, 2); + + std::cout << "GCD of ["; + for (octave_idx_type i = 0; i < n; i++) + { + a_matrix (i) = 5 * (i + 1); + if (i != 0) + std::cout << ", " << 5 * (i + 2); + else + std::cout << 5 * (i + 2); + } + std::cout << "] is "; + + octave_value_list in = octave_value (a_matrix); + octave_value_list out = feval ("gcd", in, 1); + + if (!error_state && out.length () > 0) + { + a_matrix = out(0).matrix_value (); + if (a_matrix.numel () == 1) + std::cout << a_matrix(0) << "\n"; + else + std::cout << "invalid\n"; + } + else + std::cout << "invalid\n"; + + return 0; + } diff -cNr octave-3.0.2/examples/Makefile.in octave-3.0.3/examples/Makefile.in *** octave-3.0.2/examples/Makefile.in 2008-08-01 08:50:55.000000000 +0200 --- octave-3.0.3/examples/Makefile.in 2008-09-24 09:13:46.000000000 +0200 *************** *** 39,44 **** --- 39,45 ---- SOURCES = \ addtwomatrices.cc \ celldemo.cc \ + embedded.cc \ firstmexdemo.c \ fortdemo.cc \ fortsub.f \ *************** *** 62,67 **** --- 63,69 ---- oregonator.cc \ oregonator.m \ paramdemo.cc \ + standalone.cc \ stringdemo.cc \ structdemo.cc \ unwinddemo.cc diff -cNr octave-3.0.2/examples/standalone.cc octave-3.0.3/examples/standalone.cc *** octave-3.0.2/examples/standalone.cc 1970-01-01 01:00:00.000000000 +0100 --- octave-3.0.3/examples/standalone.cc 2008-09-24 09:13:46.000000000 +0200 *************** *** 0 **** --- 1,18 ---- + #include + #include + int + main (void) + { + std::cout << "Hello Octave world!\n"; + int n = 2; + Matrix a_matrix = Matrix (n, n); + for (octave_idx_type i = 0; i < n; i++) + { + for (octave_idx_type j = 0; j < n; j++) + { + a_matrix (i, j) = (i + 1) * 10 + (j + 1); + } + } + std::cout << a_matrix; + return 0; + } diff -cNr octave-3.0.2/libcruft/ChangeLog octave-3.0.3/libcruft/ChangeLog *** octave-3.0.2/libcruft/ChangeLog 2008-08-20 07:28:21.000000000 +0200 --- octave-3.0.3/libcruft/ChangeLog 2008-09-29 08:03:11.000000000 +0200 *************** *** 1,3 **** --- 1,7 ---- + 2008-09-24 Jaroslav Hajek + + Version 3.0.3 released. + 2008-08-19 Jaroslav Hajek Version 3.0.2 released. diff -cNr octave-3.0.2/liboctave/Array.cc octave-3.0.3/liboctave/Array.cc *** octave-3.0.2/liboctave/Array.cc 2008-08-01 08:50:55.000000000 +0200 --- octave-3.0.3/liboctave/Array.cc 2008-09-29 08:03:08.000000000 +0200 *************** *** 1389,1400 **** octave_idx_type nr = dim1 (); octave_idx_type nc = dim2 (); octave_idx_type n; if (nr == 1) n = nc; else if (nc == 1) n = nr; ! else { // Reshape to row vector for Matlab compatibility. --- 1389,1407 ---- octave_idx_type nr = dim1 (); octave_idx_type nc = dim2 (); + if (idx_arg.is_colon ()) + { + // A(:) = [] always gives 0-by-0 matrix, even if A was empty. + resize_no_fill (0, 0); + return; + } + octave_idx_type n; if (nr == 1) n = nc; else if (nc == 1) n = nr; ! else if (! idx_arg.orig_empty ()) { // Reshape to row vector for Matlab compatibility. *************** *** 1402,1421 **** nr = 1; nc = n; } ! if (nr > 0 && nc > 0 && idx_arg.is_colon_equiv (n, 1)) ! { ! // Either A(:) = [] or A(idx) = [] with idx enumerating all ! // elements, so we delete all elements and return [](0x0). To ! // preserve the orientation of the vector, you have to use ! // A(idx,:) = [] (delete rows) or A(:,idx) (delete columns). ! resize_no_fill (0, 0); return; } - idx_arg.sort (true); - octave_idx_type num_to_delete = idx_arg.length (n); if (num_to_delete != 0) --- 1409,1428 ---- nr = 1; nc = n; } + else + return; ! idx_arg.sort (true); ! if (idx_arg.is_colon_equiv (n, 1)) ! { ! if (nr == 1) ! resize_no_fill (1, 0); ! else if (nc == 1) ! resize_no_fill (0, 1); return; } octave_idx_type num_to_delete = idx_arg.length (n); if (num_to_delete != 0) *************** *** 1485,1651 **** octave_idx_type nr = dim1 (); octave_idx_type nc = dim2 (); ! if (nr == 0 && nc == 0) ! return; ! ! if (idx_i.is_colon ()) ! { ! if (idx_j.is_colon ()) ! { ! // A(:,:) -- We are deleting columns and rows, so the result ! // is [](0x0). ! ! resize_no_fill (0, 0); ! return; ! } ! ! if (idx_j.is_colon_equiv (nc, 1)) ! { ! // A(:,j) -- We are deleting columns by enumerating them, ! // If we enumerate all of them, we should have zero columns ! // with the same number of rows that we started with. ! ! resize_no_fill (nr, 0); ! return; ! } ! } ! ! if (idx_j.is_colon () && idx_i.is_colon_equiv (nr, 1)) { ! // A(i,:) -- We are deleting rows by enumerating them. If we ! // enumerate all of them, we should have zero rows with the ! // same number of columns that we started with. ! resize_no_fill (0, nc); - return; } ! ! if (idx_i.is_colon_equiv (nr, 1)) { if (idx_j.is_colon_equiv (nc, 1)) ! resize_no_fill (0, 0); else { - idx_j.sort (true); - octave_idx_type num_to_delete = idx_j.length (nc); if (num_to_delete != 0) ! { ! if (nr == 1 && num_to_delete == nc) ! resize_no_fill (0, 0); ! else ! { ! octave_idx_type new_nc = nc; ! ! octave_idx_type iidx = 0; ! ! for (octave_idx_type j = 0; j < nc; j++) ! if (j == idx_j.elem (iidx)) ! { ! iidx++; ! new_nc--; ! ! if (iidx == num_to_delete) ! break; ! } ! ! if (new_nc > 0) ! { ! T *new_data = new T [nr * new_nc]; ! ! octave_idx_type jj = 0; ! iidx = 0; ! for (octave_idx_type j = 0; j < nc; j++) ! { ! if (iidx < num_to_delete && j == idx_j.elem (iidx)) ! iidx++; ! else ! { ! for (octave_idx_type i = 0; i < nr; i++) ! new_data[nr*jj+i] = xelem (i, j); ! jj++; ! } ! } ! ! if (--(Array::rep)->count <= 0) ! delete Array::rep; ! Array::rep = new typename Array::ArrayRep (new_data, nr * new_nc); ! dimensions.resize (2); ! dimensions(1) = new_nc; ! } ! else ! (*current_liboctave_error_handler) ! ("A(idx) = []: index out of range"); ! } ! } } } ! else if (idx_j.is_colon_equiv (nc, 1)) { if (idx_i.is_colon_equiv (nr, 1)) ! resize_no_fill (0, 0); else { - idx_i.sort (true); - octave_idx_type num_to_delete = idx_i.length (nr); if (num_to_delete != 0) ! { ! if (nc == 1 && num_to_delete == nr) ! resize_no_fill (0, 0); ! else ! { ! octave_idx_type new_nr = nr; ! octave_idx_type iidx = 0; ! for (octave_idx_type i = 0; i < nr; i++) ! if (i == idx_i.elem (iidx)) ! { ! iidx++; ! new_nr--; ! ! if (iidx == num_to_delete) ! break; ! } ! ! if (new_nr > 0) ! { ! T *new_data = new T [new_nr * nc]; ! ! octave_idx_type ii = 0; ! iidx = 0; ! for (octave_idx_type i = 0; i < nr; i++) ! { ! if (iidx < num_to_delete && i == idx_i.elem (iidx)) ! iidx++; ! else ! { ! for (octave_idx_type j = 0; j < nc; j++) ! new_data[new_nr*j+ii] = xelem (i, j); ! ii++; ! } ! } ! ! if (--(Array::rep)->count <= 0) ! delete Array::rep; ! ! Array::rep = new typename Array::ArrayRep (new_data, new_nr * nc); ! ! dimensions.resize (2); ! dimensions(0) = new_nr; ! } ! else ! (*current_liboctave_error_handler) ! ("A(idx) = []: index out of range"); ! } ! } } } } template --- 1492,1624 ---- octave_idx_type nr = dim1 (); octave_idx_type nc = dim2 (); ! if (idx_i.is_colon () && idx_j.is_colon ()) { ! // A special case: A(:,:). Matlab gives 0-by-nc here, but perhaps we ! // should not? resize_no_fill (0, nc); } ! else if (idx_i.is_colon ()) { + idx_j.sort (true); // sort in advance to speed-up the following check + if (idx_j.is_colon_equiv (nc, 1)) ! resize_no_fill (nr, 0); else { octave_idx_type num_to_delete = idx_j.length (nc); if (num_to_delete != 0) ! { ! octave_idx_type new_nc = nc; ! octave_idx_type iidx = 0; ! for (octave_idx_type j = 0; j < nc; j++) ! if (j == idx_j.elem (iidx)) ! { ! iidx++; ! new_nc--; ! ! if (iidx == num_to_delete) ! break; ! } ! ! if (new_nc > 0) ! { ! T *new_data = new T [nr * new_nc]; ! ! octave_idx_type jj = 0; ! iidx = 0; ! for (octave_idx_type j = 0; j < nc; j++) ! { ! if (iidx < num_to_delete && j == idx_j.elem (iidx)) ! iidx++; ! else ! { ! for (octave_idx_type i = 0; i < nr; i++) ! new_data[nr*jj+i] = xelem (i, j); ! jj++; ! } ! } ! ! if (--(Array::rep)->count <= 0) ! delete Array::rep; ! ! Array::rep = new typename Array::ArrayRep (new_data, nr * new_nc); ! ! dimensions.resize (2); ! dimensions(1) = new_nc; ! } ! else ! (*current_liboctave_error_handler) ! ("A(idx) = []: index out of range"); ! } } } ! else if (idx_j.is_colon ()) { + idx_i.sort (true); // sort in advance to speed-up the following check + if (idx_i.is_colon_equiv (nr, 1)) ! resize_no_fill (0, nc); else { octave_idx_type num_to_delete = idx_i.length (nr); if (num_to_delete != 0) ! { ! octave_idx_type new_nr = nr; ! octave_idx_type iidx = 0; ! for (octave_idx_type i = 0; i < nr; i++) ! if (i == idx_i.elem (iidx)) ! { ! iidx++; ! new_nr--; ! ! if (iidx == num_to_delete) ! break; ! } ! ! if (new_nr > 0) ! { ! T *new_data = new T [new_nr * nc]; ! ! octave_idx_type ii = 0; ! iidx = 0; ! for (octave_idx_type i = 0; i < nr; i++) ! { ! if (iidx < num_to_delete && i == idx_i.elem (iidx)) ! iidx++; ! else ! { ! for (octave_idx_type j = 0; j < nc; j++) ! new_data[new_nr*j+ii] = xelem (i, j); ! ii++; ! } ! } ! ! if (--(Array::rep)->count <= 0) ! delete Array::rep; ! ! Array::rep = new typename Array::ArrayRep (new_data, new_nr * nc); ! ! dimensions.resize (2); ! dimensions(0) = new_nr; ! } ! else ! (*current_liboctave_error_handler) ! ("A(idx) = []: index out of range"); ! } } } + else if (! (idx_i.orig_empty () || idx_j.orig_empty ())) + { + (*current_liboctave_error_handler) + ("a null assignment can have only one non-colon index"); + } } template *************** *** 1661,1666 **** --- 1634,1654 ---- { octave_idx_type n_idx = ra_idx.length (); + // Special case matrices + if (ndims () == 2) + { + if (n_idx == 1) + { + maybe_delete_elements (ra_idx (0)); + return; + } + else if (n_idx == 2) + { + maybe_delete_elements (ra_idx (0), ra_idx (1)); + return; + } + } + dim_vector lhs_dims = dims (); int n_lhs_dims = lhs_dims.length (); *************** *** 1701,1706 **** --- 1689,1695 ---- for (octave_idx_type i = 0; i < n_idx; i++) { + if (ra_idx(i).orig_empty ()) return; idx_is_colon_equiv(i) = ra_idx(i).is_colon_equiv (lhs_dims(i), 1); idx_is_colon(i) = ra_idx(i).is_colon (); *************** *** 1756,1773 **** if (idx_ok) { if (n_idx > 1 ! && (all_ones (idx_is_colon) || all_ones (idx_is_colon_equiv))) { // A(:,:,:) -- we are deleting elements in all dimensions, so // the result is [](0x0x0). ! dim_vector zeros; ! zeros.resize (n_idx); ! ! for (int i = 0; i < n_idx; i++) ! zeros(i) = 0; ! resize (zeros, rfv); } else if (n_idx > 1 --- 1745,1759 ---- if (idx_ok) { if (n_idx > 1 ! && (all_ones (idx_is_colon))) { // A(:,:,:) -- we are deleting elements in all dimensions, so // the result is [](0x0x0). ! dim_vector newdim = dims (); ! newdim(0) = 0; ! resize (newdim, rfv); } else if (n_idx > 1 *************** *** 2037,2044 **** retval = index (idx[0]); } else ! (*current_liboctave_error_handler) ! ("Array::value: invalid number of indices specified"); clear_index (); --- 2023,2034 ---- retval = index (idx[0]); } else ! { ! clear_index (); ! ! (*current_liboctave_error_handler) ! ("Array::value: invalid number of indices specified"); ! } clear_index (); *************** *** 2561,2566 **** --- 2551,2558 ---- } else { + lhs.clear_index (); + (*current_liboctave_error_handler) ("A(I) = X: X must be a scalar or a vector with same length as I"); *************** *** 2569,2574 **** --- 2561,2568 ---- } else { + lhs.clear_index (); + (*current_liboctave_error_handler) ("A(I) = X: unable to resize A"); *************** *** 2589,2599 **** lhs.xelem (i) = rhs.elem (i); } else if (rhs_len != lhs_len) ! (*current_liboctave_error_handler) ! ("A(:) = X: A must be the same size as X"); } else if (! (rhs_len == 1 || rhs_len == 0)) { (*current_liboctave_error_handler) ("A([]) = X: X must also be an empty matrix or a scalar"); --- 2583,2599 ---- lhs.xelem (i) = rhs.elem (i); } else if (rhs_len != lhs_len) ! { ! lhs.clear_index (); ! ! (*current_liboctave_error_handler) ! ("A(:) = X: A must be the same size as X"); ! } } else if (! (rhs_len == 1 || rhs_len == 0)) { + lhs.clear_index (); + (*current_liboctave_error_handler) ("A([]) = X: X must also be an empty matrix or a scalar"); *************** *** 2655,2660 **** --- 2655,2661 ---- break; default: + lhs.clear_index (); (*current_liboctave_error_handler) ("Array::assign2: Dimension mismatch"); return 0; *************** *** 2769,2774 **** --- 2770,2777 ---- { if (! (rhs_is_scalar || (rhs_nr == 0 || rhs_nc == 0))) { + lhs.clear_index (); + (*current_liboctave_error_handler) ("A([], []) = X: X must be an empty matrix or a scalar"); *************** *** 2777,2788 **** } else { (*current_liboctave_error_handler) ! ("A(I, J) = X: X must be a scalar or the number of elements in I must"); ! (*current_liboctave_error_handler) ! ("match the number of rows in X and the number of elements in J must"); ! (*current_liboctave_error_handler) ! ("match the number of columns in X"); retval = 0; } --- 2780,2789 ---- } else { + lhs.clear_index (); + (*current_liboctave_error_handler) ! ("A(I, J) = X: X must be a scalar or the number of elements in I must match the number of rows in X and the number of elements in J must match the number of columns in X"); retval = 0; } *************** *** 2900,2907 **** else if (len == 0) { if (! (rhs_is_scalar || (rhs_nr == 0 || rhs_nc == 0))) ! (*current_liboctave_error_handler) ! ("A([]) = X: X must be an empty matrix or scalar"); } else if (len == rhs_nr * rhs_nc) { --- 2901,2914 ---- else if (len == 0) { if (! (rhs_is_scalar || (rhs_nr == 0 || rhs_nc == 0))) ! { ! lhs.clear_index (); ! ! (*current_liboctave_error_handler) ! ("A([]) = X: X must be an empty matrix or scalar"); ! ! retval = 0; ! } } else if (len == rhs_nr * rhs_nc) { *************** *** 2943,2948 **** --- 2950,2957 ---- } else { + lhs.clear_index (); + (*current_liboctave_error_handler) ("A(I) = X: X must be a scalar or a matrix with the same size as I"); *************** *** 2989,2994 **** --- 2998,3005 ---- } else if (n_idx == 0) { + lhs.clear_index (); + (*current_liboctave_error_handler) ("invalid number of indices for matrix expression"); *************** *** 3015,3020 **** --- 3026,3033 ---- { if (! (rhs_dims.all_ones () || rhs_dims.any_zero ())) { + lhs.clear_index (); + (*current_liboctave_error_handler) ("A([]) = X: X must be an empty matrix or scalar"); *************** *** 3063,3068 **** --- 3076,3083 ---- } else { + lhs.clear_index (); + (*current_liboctave_error_handler) ("A(I) = X: X must be a scalar or a matrix with the same size as I"); *************** *** 3174,3179 **** --- 3189,3196 ---- } else if (new_dims_numel != rhs_dims_numel || new_dims_vec > 1) { + lhs.clear_index (); + (*current_liboctave_error_handler) ("A(IDX-LIST) = RHS: mismatched index and RHS dimension"); return retval; *************** *** 3201,3206 **** --- 3218,3225 ---- k++; else if (nelem != 1) { + lhs.clear_index (); + (*current_liboctave_error_handler) ("A(IDX-LIST) = RHS: mismatched index and RHS dimension"); return retval; *************** *** 3243,3248 **** --- 3262,3269 ---- // be an error, because we don't know how to undo that // later... + lhs.clear_index (); + (*current_liboctave_error_handler) ("array index %d (= %d) for assignment requires invalid resizing operation", n_idx, new_dims(n_idx-1)); *************** *** 3369,3374 **** --- 3390,3397 ---- if (n != rhs.numel ()) { + lhs.clear_index (); + (*current_liboctave_error_handler) ("A(IDX-LIST) = X: X must be a scalar or size of X must equal number of elements indexed by IDX-LIST"); diff -cNr octave-3.0.2/liboctave/Array.h octave-3.0.3/liboctave/Array.h *** octave-3.0.2/liboctave/Array.h 2008-08-01 08:50:55.000000000 +0200 --- octave-3.0.3/liboctave/Array.h 2008-09-24 09:13:47.000000000 +0200 *************** *** 499,504 **** --- 499,506 ---- void maybe_delete_elements (Array& ra_idx, const T& rfv); + void maybe_delete_elements (octave_idx_type dim, idx_vector& i); + Array value (void) const; Array index (idx_vector& i, int resize_ok = 0, diff -cNr octave-3.0.2/liboctave/ChangeLog octave-3.0.3/liboctave/ChangeLog *** octave-3.0.2/liboctave/ChangeLog 2008-08-20 07:28:21.000000000 +0200 --- octave-3.0.3/liboctave/ChangeLog 2008-09-29 08:03:11.000000000 +0200 *************** *** 1,3 **** --- 1,40 ---- + 2008-09-24 Jaroslav Hajek + + Version 3.0.3 released. + + 2008-09-29 Jaroslav Hajek + + * Array.cc (Array::maybe_delete_elements_2(idx_vector&)): Return on + empty index vector. + + 2008-09-29 Jaroslav Hajek + + * Array.cc (Array::maybe_delete_elements_2, Array::maybe_delete_elements): + Ignore null assignments with empty index vectors. + + 2008-09-19 John W. Eaton + + * Array.cc (assign1, assign2, assignN): + Clear lhs index before throwing error. + (Array::value): Clear index before throwing error. + + 2008-09-18 Jaroslav Hajek + + * Array.cc (maybe_delete_elements_2 (idx_vector&)): Fix tests to get + better Matlab compatibility. + (maybe_delete_elements (idx_vector&, idx_vector&)): Fix tests to get + better Matlab compatibility, simplify, gripe on invalid 2-D deletion. + + 2008-01-18 Marco Caliari + + * dMatrix.cc (Matrix::expm): Correctly perform reverse permutation. + * CMatrix.cc (ComplexMatrix::expm): Likewise. + + 2008-09-12 Jaroslav Hajek + + * oct-inttypes.h (pow (const octave_int&, const octave_int&)): + Handle negative exponent correctly. + 2008-08-14 Jaroslav Hajek Version 3.0.2 released. diff -cNr octave-3.0.2/liboctave/CMatrix.cc octave-3.0.3/liboctave/CMatrix.cc *** octave-3.0.2/liboctave/CMatrix.cc 2008-08-01 08:50:55.000000000 +0200 --- octave-3.0.3/liboctave/CMatrix.cc 2008-09-24 09:13:47.000000000 +0200 *************** *** 2896,2901 **** --- 2896,2904 ---- if (sqpow > 0) { + if (sqpow > 1023) + sqpow = 1023; + double scale_factor = 1.0; for (octave_idx_type i = 0; i < sqpow; i++) scale_factor *= 2.0; *************** *** 2942,2949 **** // Compute pade approximation = inverse (dpp) * npp. ! retval = dpp.solve (npp); ! // Reverse preconditioning step 3: repeated squaring. while (sqpow) --- 2945,2955 ---- // Compute pade approximation = inverse (dpp) * npp. ! retval = dpp.solve (npp, info); ! ! if (info < 0) ! return retval; ! // Reverse preconditioning step 3: repeated squaring. while (sqpow) *************** *** 2976,2981 **** --- 2982,3004 ---- iperm(swapidx) = tmp; } + // construct inverse balancing permutation vector + Array invpvec (nc); + for (octave_idx_type i = 0; i < nc; i++) + invpvec(iperm(i)) = i; // Thanks to R. A. Lippert for this method + + OCTAVE_QUIT; + + ComplexMatrix tmpMat = retval; + for (octave_idx_type i = 0; i < nc; i++) + for (octave_idx_type j = 0; j < nc; j++) + retval(i,j) = tmpMat(invpvec(i),invpvec(j)); + + OCTAVE_QUIT; + + for (octave_idx_type i = 0; i < nc; i++) + iperm(i) = i; // initialize to identity permutation + // trailing permutations must be done in reverse order for (octave_idx_type i = nc - 1; i >= ihi; i--) { *************** *** 2986,2998 **** } // construct inverse balancing permutation vector - Array invpvec (nc); for (octave_idx_type i = 0; i < nc; i++) invpvec(iperm(i)) = i; // Thanks to R. A. Lippert for this method OCTAVE_QUIT; ! ComplexMatrix tmpMat = retval; for (octave_idx_type i = 0; i < nc; i++) for (octave_idx_type j = 0; j < nc; j++) retval(i,j) = tmpMat(invpvec(i),invpvec(j)); --- 3009,3020 ---- } // construct inverse balancing permutation vector for (octave_idx_type i = 0; i < nc; i++) invpvec(iperm(i)) = i; // Thanks to R. A. Lippert for this method OCTAVE_QUIT; ! tmpMat = retval; for (octave_idx_type i = 0; i < nc; i++) for (octave_idx_type j = 0; j < nc; j++) retval(i,j) = tmpMat(invpvec(i),invpvec(j)); diff -cNr octave-3.0.2/liboctave/dMatrix.cc octave-3.0.3/liboctave/dMatrix.cc *** octave-3.0.2/liboctave/dMatrix.cc 2008-08-01 08:50:55.000000000 +0200 --- octave-3.0.3/liboctave/dMatrix.cc 2008-09-24 09:13:47.000000000 +0200 *************** *** 2523,2532 **** if (sqpow > 0) { double scale_factor = 1.0; for (octave_idx_type i = 0; i < sqpow; i++) scale_factor *= 2.0; ! m = m / scale_factor; } --- 2523,2535 ---- if (sqpow > 0) { + if (sqpow > 1023) + sqpow = 1023; + double scale_factor = 1.0; for (octave_idx_type i = 0; i < sqpow; i++) scale_factor *= 2.0; ! m = m / scale_factor; } *************** *** 2570,2576 **** // Compute pade approximation = inverse (dpp) * npp. retval = dpp.solve (npp, info); ! // Reverse preconditioning step 3: repeated squaring. while (sqpow) --- 2573,2582 ---- // Compute pade approximation = inverse (dpp) * npp. retval = dpp.solve (npp, info); ! ! if (info < 0) ! return retval; ! // Reverse preconditioning step 3: repeated squaring. while (sqpow) *************** *** 2601,2606 **** --- 2607,2629 ---- iperm(swapidx) = tmp; } + // construct inverse balancing permutation vector + Array invpvec (nc); + for (octave_idx_type i = 0; i < nc; i++) + invpvec(iperm(i)) = i; // Thanks to R. A. Lippert for this method + + OCTAVE_QUIT; + + Matrix tmpMat = retval; + for (octave_idx_type i = 0; i < nc; i++) + for (octave_idx_type j = 0; j < nc; j++) + retval(i,j) = tmpMat(invpvec(i),invpvec(j)); + + OCTAVE_QUIT; + + for (octave_idx_type i = 0; i < nc; i++) + iperm(i) = i; // identity permutation + // trailing permutations must be done in reverse order for (octave_idx_type i = nc - 1; i >= ihi; i--) { *************** *** 2611,2623 **** } // construct inverse balancing permutation vector - Array invpvec (nc); for (octave_idx_type i = 0; i < nc; i++) invpvec(iperm(i)) = i; // Thanks to R. A. Lippert for this method OCTAVE_QUIT; ! Matrix tmpMat = retval; for (octave_idx_type i = 0; i < nc; i++) for (octave_idx_type j = 0; j < nc; j++) retval(i,j) = tmpMat(invpvec(i),invpvec(j)); --- 2634,2645 ---- } // construct inverse balancing permutation vector for (octave_idx_type i = 0; i < nc; i++) invpvec(iperm(i)) = i; // Thanks to R. A. Lippert for this method OCTAVE_QUIT; ! tmpMat = retval; for (octave_idx_type i = 0; i < nc; i++) for (octave_idx_type j = 0; j < nc; j++) retval(i,j) = tmpMat(invpvec(i),invpvec(j)); diff -cNr octave-3.0.2/liboctave/oct-inttypes.h octave-3.0.3/liboctave/oct-inttypes.h *** octave-3.0.2/liboctave/oct-inttypes.h 2008-08-01 08:50:56.000000000 +0200 --- octave-3.0.3/liboctave/oct-inttypes.h 2008-09-24 09:13:47.000000000 +0200 *************** *** 348,357 **** octave_int zero = octave_int (0); octave_int one = octave_int (1); ! if (b == zero) retval = one; else if (b < zero) ! retval = zero; else { octave_int a_val = a; --- 348,362 ---- octave_int zero = octave_int (0); octave_int one = octave_int (1); ! if (b == zero || a == one) retval = one; else if (b < zero) ! { ! if (std::numeric_limits::is_signed && a.value () == -1) ! retval = (b.value () % 2) ? a : one; ! else ! retval = zero; ! } else { octave_int a_val = a; diff -cNr octave-3.0.2/scripts/ChangeLog octave-3.0.3/scripts/ChangeLog *** octave-3.0.2/scripts/ChangeLog 2008-08-20 07:28:21.000000000 +0200 --- octave-3.0.3/scripts/ChangeLog 2008-09-29 08:03:11.000000000 +0200 *************** *** 1,3 **** --- 1,82 ---- + 2008-09-24 Jaroslav Hajek + + Version 3.0.3 released. + + 2008-09-24 John W. Eaton + + * general/interpft.m: Increase tolerance in tests. + + 2008-09-23 Francesco Potorti` + + * plot/pcolor.m: Improve doc string. + + 2008-09-18 Jaroslav Hajek + + * general/blkdiag.m: Skip assignment if rhs is empty. + + 2008-09-18 Kris Thielemans + + * image/imshow.m: Fix for display_range. + + * general/interpn.m: Fixe for extrapval and documentation of + extrapval. + + 2008-09-19 David Bateman + + * general/cell2mat.m: Specialize 2D case for speed. + + 2008-09-08 Tatsuro MATSUOKA + + * plot/plot.m: Doc fix. + + 2008-09-08 Mark van Rossum + + * statistics/distributions/binornd.m: Handle zero values of n + correctly. + + 2008-08-28 Martin Weiser + + * plot/scatter3.m: Doc fix. + + 2008-08-26 John W. Eaton + + * plot/hold.m: If hold is applied to a figure, set state for all + child axes objects. + + 2008-08-22 John W. Eaton + + * statistics/distributions/chi2rnd.m: Fix missing semicolon. + + 2008-08-21 John W. Eaton + + * plot/__go_draw_axes__.m: Fix test for have_data. + (__gnuplot_write_data__): Write "Inf Inf\n" if all data pairs + contain NaN values. + + 2008-07-28 David Bateman + + * plot/contourf.m: Allow X,Y to be unequal vectors. + + * plot/shading.m: Clarify help string. + + 2008-08-20 Jaroslav Hajek + + * pkg/pkg.m (configure_make): Pass handle to is_architecture_dependent + directly. + + 2008-08-20 David Bateman + + * plot/__go_draw_axes__.m: Don't set pm3d implicit if the plot + contains a surface. Fixes things like meshc(peaks()). + + 2008-08-19 Jaroslav Hajek + + * optimization/glpk.m: Fix invalid call to zeros. + + 2008-08-19 David Bateman + + statistics/base/ranks.m: Doc fix. + 2008-08-19 Jaroslav Hajek Version 3.0.2 released. diff -cNr octave-3.0.2/scripts/control/system/is_stabilizable.m octave-3.0.3/scripts/control/system/is_stabilizable.m *** octave-3.0.2/scripts/control/system/is_stabilizable.m 2008-08-01 08:32:27.000000000 +0200 --- octave-3.0.3/scripts/control/system/is_stabilizable.m 2008-09-24 09:13:48.000000000 +0200 *************** *** 75,81 **** ## Checking dimensions ! n = is_square (a); if (n == 0) error ("is_stabilizable: a must be square"); endif --- 75,81 ---- ## Checking dimensions ! n = issquare (a); if (n == 0) error ("is_stabilizable: a must be square"); endif diff -cNr octave-3.0.2/scripts/DOCSTRINGS octave-3.0.3/scripts/DOCSTRINGS *** octave-3.0.2/scripts/DOCSTRINGS 2008-08-14 13:42:07.000000000 +0200 --- octave-3.0.3/scripts/DOCSTRINGS 2008-09-29 07:57:17.000000000 +0200 *************** *** 991,999 **** The default method is 'linear'. ! If @var{extrap} is the string 'extrap', then extrapolate values beyond ! the endpoints. If @var{extrap} is a number, replace values beyond the ! endpoints with that number. If @var{extrap} is missing, assume NA. @seealso{interp1, interp2, spline, ndgrid} @end deftypefn celldisp --- 991,999 ---- The default method is 'linear'. ! If @var{extrapval} is the scalar value, use it to replace the values ! beyond the endpoints with that number. If @var{extrapval} is missing, ! assume NA. @seealso{interp1, interp2, spline, ndgrid} @end deftypefn celldisp *************** *** 4708,4718 **** ranks -*- texinfo -*- @deftypefn {Function File} {} ranks (@var{x}, @var{dim}) ! If @var{x} is a vector, return the (column) vector of ranks of ! @var{x} adjusted for ties. ! ! If @var{x} is a matrix, do the above for along the first ! non-singleton dimension. If the optional argument @var{dim} is given, operate along this dimension. @end deftypefn var --- 4708,4715 ---- ranks -*- texinfo -*- @deftypefn {Function File} {} ranks (@var{x}, @var{dim}) ! Return the ranks of @var{x} along the first non-singleton dimension ! adjust for ties. If the optional argument @var{dim} is given, operate along this dimension. @end deftypefn var *************** *** 7259,7269 **** @deftypefnx {Function File} {} scatter3 (@var{h}, @dots{}) @deftypefnx {Function File} {@var{h} =} scatter3 (@dots{}) ! Plot a scatter plot of the data in 3D. A marker is ploted at each point ! defined by the points in the vectors @var{x} and @var{y}. The size of ! the markers used is determined by the @var{s}, which can be a scalar, ! a vector of the same length of @var{x} and @var{y}. If @var{s} is not ! given or is an empty matrix, then the default value of 8 points is used. The color of the markers is determined by @var{c}, which can be a string defining a fixed color, a 3 element vector giving the red, green and blue --- 7256,7266 ---- @deftypefnx {Function File} {} scatter3 (@var{h}, @dots{}) @deftypefnx {Function File} {@var{h} =} scatter3 (@dots{}) ! Plot a scatter plot of the data in 3D. A marker is plotted at each point ! defined by the points in the vectors @var{x}, @var{y} and @var{z}. The size ! of the markers used is determined by @var{s}, which can be a scalar or ! a vector of the same length of @var{x}, @var{y} and @var{z}. If @var{s} is ! not given or is an empty matrix, then the default value of 8 points is used. The color of the markers is determined by @var{c}, which can be a string defining a fixed color, a 3 element vector giving the red, green and blue *************** *** 7389,7397 **** @item . Set dots plot style. - @item ^ - Set impulses plot style. - @item L Set steps plot style. --- 7386,7391 ---- *************** *** 7416,7421 **** --- 7410,7416 ---- @itemx * @itemx o @itemx x + @itemx ^ Used in combination with the points or linespoints styles, set the point style. @end table *************** *** 7861,7869 **** @deftypefn {Function File} {} shading (@var{type}) @deftypefnx {Function File} {} shading (@var{ax}, @dots{}) Set the shading of surface or patch graphic objects. Valid arguments ! for @var{type} are @code{"flat"}, @code{"interp"}, or ! @code{"faceted"}. If @var{ax} is given the shading is applied to ! axis @var{ax} instead of the current axis. @end deftypefn xlim -*- texinfo -*- --- 7856,7877 ---- @deftypefn {Function File} {} shading (@var{type}) @deftypefnx {Function File} {} shading (@var{ax}, @dots{}) Set the shading of surface or patch graphic objects. Valid arguments ! for @var{type} are ! ! @table @code ! @item "flat" ! Single colored patches with invisible edges. ! ! @item "faceted" ! Single colored patches with visible edges. ! ! @item "interp" ! Color between patch vertices are interpolated and the patch edges are ! invisible. ! @end table ! ! If @var{ax} is given the shading is applied to axis @var{ax} instead ! of the current axis. @end deftypefn xlim -*- texinfo -*- *************** *** 8067,8077 **** @deftypefnx {Function File} {} pcolor (@var{c}) Density plot for given matrices @var{x}, and @var{y} from @code{meshgrid} and a matrix @var{c} corresponding to the @var{x} and @var{y} coordinates of ! the mesh. If @var{x} and @var{y} are vectors, then a typical vertex is (@var{x}(j), @var{y}(i), @var{c}(i,j)). Thus, columns of @var{c} correspond to different @var{x} values and rows of @var{c} correspond to different @var{y} values. ! @seealso{meshgrid, contour} @end deftypefn close -*- texinfo -*- --- 8075,8103 ---- @deftypefnx {Function File} {} pcolor (@var{c}) Density plot for given matrices @var{x}, and @var{y} from @code{meshgrid} and a matrix @var{c} corresponding to the @var{x} and @var{y} coordinates of ! the mesh's vertices. If @var{x} and @var{y} are vectors, then a typical vertex is (@var{x}(j), @var{y}(i), @var{c}(i,j)). Thus, columns of @var{c} correspond to different @var{x} values and rows of @var{c} correspond to different @var{y} values. ! ! The @code{colormap} is scaled to the extents of @var{c}. ! Limits may be placed on the color axis by the ! command @code{caxis}, or by setting the @code{clim} property of the ! parent axis. ! ! The face color of each cell of the mesh is determined by interpolating ! the values of @var{c} for the cell's vertices. Contrast this with ! @code{imagesc} which renders one cell for each element of @var{c}. ! ! @code{shading} modifies an attribute determining the manner by which the ! face color of each cell is interpolated from the values of @var{c}, ! and the visibility of the cells' edges. By default the attribute is ! "faceted", which renders a single color for each cell's face with the edge ! visible. ! ! @var{h} is the handle to the surface object. ! ! @seealso{caxis, contour, meshgrid, imagesc, shading} @end deftypefn close -*- texinfo -*- diff -cNr octave-3.0.2/scripts/general/blkdiag.m octave-3.0.3/scripts/general/blkdiag.m *** octave-3.0.2/scripts/general/blkdiag.m 2008-08-01 08:32:27.000000000 +0200 --- octave-3.0.3/scripts/general/blkdiag.m 2008-09-24 09:13:48.000000000 +0200 *************** *** 49,55 **** retval = zeros (csz(end,:)); for p = 1:nargin ! retval((csz(p,1)+1):csz(p+1,1),(csz(p,2)+1):csz(p+1,2)) = varargin{p}; endfor endfunction --- 49,58 ---- retval = zeros (csz(end,:)); for p = 1:nargin ! vp = varargin{p}; ! if (! isempty (vp)) ! retval((csz(p,1)+1):csz(p+1,1),(csz(p,2)+1):csz(p+1,2)) = vp; ! endif endfor endfunction diff -cNr octave-3.0.2/scripts/general/cell2mat.m octave-3.0.3/scripts/general/cell2mat.m *** octave-3.0.2/scripts/general/cell2mat.m 2008-08-01 08:32:27.000000000 +0200 --- octave-3.0.3/scripts/general/cell2mat.m 2008-09-24 09:13:48.000000000 +0200 *************** *** 48,53 **** --- 48,69 ---- else error ("cell2mat: all elements of cell array must be numeric, logical or char"); endif + elseif (ndims (c) == 2) + nr = rows (c); + nc = columns (c); + if (nc > nr) + c1 = cell (nr, 1); + for i = 1 : nr + c1{i} = [c{i : nr : end}]; + endfor + m = cat (1, c1 {:}); + else + c1 = cell (nc, 1); + for i = 1 : nc + c1{i} = cat (1, c{(i - 1) * nr + [1 : nr]}); + endfor + m = [c1{:}]; + endif else ## n dimensions case for k = ndims (c):-1:2, diff -cNr octave-3.0.2/scripts/general/interpft.m octave-3.0.3/scripts/general/interpft.m *** octave-3.0.2/scripts/general/interpft.m 2008-08-01 08:32:27.000000000 +0200 --- octave-3.0.3/scripts/general/interpft.m 2008-09-29 07:36:19.000000000 +0200 *************** *** 106,114 **** %!shared n,y %! x = [0:10]'; y = sin(x); n = length (x); ! %!assert (interpft(y, n), y, eps); ! %!assert (interpft(y', n), y', eps); ! %!assert (interpft([y,y],n), [y,y], eps); %!error (interpft(y,n,0)) %!error (interpft(y,[n,n])) --- 106,114 ---- %!shared n,y %! x = [0:10]'; y = sin(x); n = length (x); ! %!assert (interpft(y, n), y, 2*eps); ! %!assert (interpft(y', n), y', 2*eps); ! %!assert (interpft([y,y],n), [y,y], 2*eps); %!error (interpft(y,n,0)) %!error (interpft(y,[n,n])) diff -cNr octave-3.0.2/scripts/general/interpn.m octave-3.0.3/scripts/general/interpn.m *** octave-3.0.2/scripts/general/interpn.m 2008-08-01 08:32:27.000000000 +0200 --- octave-3.0.3/scripts/general/interpn.m 2008-09-24 09:13:48.000000000 +0200 *************** *** 55,63 **** ## ## The default method is 'linear'. ## ! ## If @var{extrap} is the string 'extrap', then extrapolate values beyond ! ## the endpoints. If @var{extrap} is a number, replace values beyond the ! ## endpoints with that number. If @var{extrap} is missing, assume NA. ## @seealso{interp1, interp2, spline, ndgrid} ## @end deftypefn --- 55,63 ---- ## ## The default method is 'linear'. ## ! ## If @var{extrapval} is the scalar value, use it to replace the values ! ## beyond the endpoints with that number. If @var{extrapval} is missing, ! ## assume NA. ## @seealso{interp1, interp2, spline, ndgrid} ## @end deftypefn *************** *** 79,84 **** --- 79,85 ---- error ("extrapal is expected to be a numeric scalar"); endif method = varargin{end - 1}; + extrapval = varargin{end}; nargs = nargs - 2; endif diff -cNr octave-3.0.2/scripts/image/imshow.m octave-3.0.3/scripts/image/imshow.m *** octave-3.0.2/scripts/image/imshow.m 2008-08-01 08:50:56.000000000 +0200 --- octave-3.0.3/scripts/image/imshow.m 2008-09-24 09:13:48.000000000 +0200 *************** *** 103,109 **** elseif (ischar (arg)) switch (arg) case "displayrange"; ! displayrange = varargin{narg++}; case {"truesize", "initialmagnification"} warning ("image: zoom argument ignored -- use GUI features"); otherwise --- 103,109 ---- elseif (ischar (arg)) switch (arg) case "displayrange"; ! display_range = varargin{narg++}; case {"truesize", "initialmagnification"} warning ("image: zoom argument ignored -- use GUI features"); otherwise *************** *** 115,124 **** endif endwhile ! ## Set default display range. if (isempty (display_range)) display_range = [min(im(:)), max(im(:))]; ! else t = class (im); switch (t) case {"double", "single", "logical"} --- 115,124 ---- endif endwhile ! ## Set default display range if display_range not set yet. if (isempty (display_range)) display_range = [min(im(:)), max(im(:))]; ! elseif (isna (display_range)) t = class (im); switch (t) case {"double", "single", "logical"} diff -cNr octave-3.0.2/scripts/optimization/glpk.m octave-3.0.3/scripts/optimization/glpk.m *** octave-3.0.2/scripts/optimization/glpk.m 2008-08-01 08:32:28.000000000 +0200 --- octave-3.0.3/scripts/optimization/glpk.m 2008-09-24 09:13:48.000000000 +0200 *************** *** 470,476 **** if (nargin > 3) if (isempty (lb)) ! lb = zeros (0, nx, 1); elseif (! isreal (lb) || all (size (lb) > 1) || length (lb) != nx) error ("LB must be a real valued %d by 1 column vector", nx); return; --- 470,476 ---- if (nargin > 3) if (isempty (lb)) ! lb = zeros (nx, 1); elseif (! isreal (lb) || all (size (lb) > 1) || length (lb) != nx) error ("LB must be a real valued %d by 1 column vector", nx); return; diff -cNr octave-3.0.2/scripts/pkg/pkg.m octave-3.0.3/scripts/pkg/pkg.m *** octave-3.0.2/scripts/pkg/pkg.m 2008-08-01 08:50:56.000000000 +0200 --- octave-3.0.3/scripts/pkg/pkg.m 2008-09-24 09:13:48.000000000 +0200 *************** *** 1302,1308 **** if (isempty (filenames)) idx = []; else ! idx = cellfun (@(x) is_architecture_dependent (x), filenames); endif archdependent = filenames (idx); archindependent = filenames (!idx); --- 1302,1308 ---- if (isempty (filenames)) idx = []; else ! idx = cellfun (@is_architecture_dependent, filenames); endif archdependent = filenames (idx); archindependent = filenames (!idx); diff -cNr octave-3.0.2/scripts/plot/contourf.m octave-3.0.3/scripts/plot/contourf.m *** octave-3.0.2/scripts/plot/contourf.m 2008-08-01 08:50:56.000000000 +0200 --- octave-3.0.3/scripts/plot/contourf.m 2008-09-24 09:13:48.000000000 +0200 *************** *** 227,233 **** arg(1:4) = []; endif ! if (any (size (X) != size (Y))) error ("patch: X and Y must be of same size") endif --- 227,233 ---- arg(1:4) = []; endif ! if (!isvector (X) || !isvector (Y) && any (size (X) != size (Y))) error ("patch: X and Y must be of same size") endif diff -cNr octave-3.0.2/scripts/plot/__go_draw_axes__.m octave-3.0.3/scripts/plot/__go_draw_axes__.m *** octave-3.0.2/scripts/plot/__go_draw_axes__.m 2008-08-01 08:50:56.000000000 +0200 --- octave-3.0.3/scripts/plot/__go_draw_axes__.m 2008-09-24 09:13:48.000000000 +0200 *************** *** 1001,1007 **** ## This is need to prevent warnings for rotations in 3D plots, while ## allowing colorbars with contours.. ! if (nd == 2 || data_idx > 1) fputs (plot_stream, "set pm3d implicit;\n"); else fputs (plot_stream, "set pm3d explicit;\n"); --- 1001,1007 ---- ## This is need to prevent warnings for rotations in 3D plots, while ## allowing colorbars with contours.. ! if (nd == 2 || (data_idx > 1 && !view_map)) fputs (plot_stream, "set pm3d implicit;\n"); else fputs (plot_stream, "set pm3d explicit;\n"); *************** *** 1013,1019 **** fputs (plot_stream, "unset hidden3d;\n"); endif ! have_data = (! (isempty (data) || any (cellfun (@isempty, data)))); if (isempty (xlim)) return; --- 1013,1019 ---- fputs (plot_stream, "unset hidden3d;\n"); endif ! have_data = (! (isempty (data) || all (cellfun (@isempty, data)))); if (isempty (xlim)) return; *************** *** 1447,1461 **** n = columns (data); have_nans = true; num_nan_elts = numel (nan_elts); ! k = 1; ! for i = 1:n ! if (have_nans && i == nan_elts(k)) ! fputs (plot_stream, "\n"); ! have_nans = ++k <= num_nan_elts; ! else ! fprintf (plot_stream, fmt, data(:,i)); ! endif ! endfor endif elseif (nd == 3) ## FIXME -- handle NaNs here too? --- 1447,1465 ---- n = columns (data); have_nans = true; num_nan_elts = numel (nan_elts); ! if (num_nan_elts == n) ! fputs (plot_stream, "Inf Inf\n"); ! else ! k = 1; ! for i = 1:n ! if (have_nans && i == nan_elts(k)) ! fputs (plot_stream, "\n"); ! have_nans = ++k <= num_nan_elts; ! else ! fprintf (plot_stream, fmt, data(:,i)); ! endif ! endfor ! endif endif elseif (nd == 3) ## FIXME -- handle NaNs here too? diff -cNr octave-3.0.2/scripts/plot/hold.m octave-3.0.3/scripts/plot/hold.m *** octave-3.0.2/scripts/plot/hold.m 2008-08-01 08:32:28.000000000 +0200 --- octave-3.0.3/scripts/plot/hold.m 2008-09-24 09:13:48.000000000 +0200 *************** *** 38,49 **** function hold (varargin) ! [h, varargin] = __plt_get_axis_arg__ ("hold", varargin{:}); hold_state = get (h, "nextplot"); - nargs = numel (varargin); - if (nargs == 0) if (strcmp (hold_state, "add")) hold_state = "replace"; --- 38,52 ---- function hold (varargin) ! if (nargin > 0 && ishandle (varargin{1})) ! [h, varargin, nargs] = __plt_get_axis_arg__ ("hold", varargin{:}); ! else ! h = gcf (); ! nargs = numel (varargin); ! endif hold_state = get (h, "nextplot"); if (nargs == 0) if (strcmp (hold_state, "add")) hold_state = "replace"; *************** *** 65,70 **** --- 68,78 ---- print_usage (); endif + if (isfigure (h)) + axes_objs = findobj (h, "type", "axes"); + h = [h; axes_objs]; + endif + set (h, "nextplot", hold_state); endfunction diff -cNr octave-3.0.2/scripts/plot/pcolor.m octave-3.0.3/scripts/plot/pcolor.m *** octave-3.0.2/scripts/plot/pcolor.m 2008-08-01 08:50:56.000000000 +0200 --- octave-3.0.3/scripts/plot/pcolor.m 2008-09-24 09:13:48.000000000 +0200 *************** *** 21,31 **** ## @deftypefnx {Function File} {} pcolor (@var{c}) ## Density plot for given matrices @var{x}, and @var{y} from @code{meshgrid} and ## a matrix @var{c} corresponding to the @var{x} and @var{y} coordinates of ! ## the mesh. If @var{x} and @var{y} are vectors, then a typical vertex ## is (@var{x}(j), @var{y}(i), @var{c}(i,j)). Thus, columns of @var{c} ## correspond to different @var{x} values and rows of @var{c} correspond ## to different @var{y} values. ! ## @seealso{meshgrid, contour} ## @end deftypefn ## Author: Kai Habel --- 21,49 ---- ## @deftypefnx {Function File} {} pcolor (@var{c}) ## Density plot for given matrices @var{x}, and @var{y} from @code{meshgrid} and ## a matrix @var{c} corresponding to the @var{x} and @var{y} coordinates of ! ## the mesh's vertices. If @var{x} and @var{y} are vectors, then a typical vertex ## is (@var{x}(j), @var{y}(i), @var{c}(i,j)). Thus, columns of @var{c} ## correspond to different @var{x} values and rows of @var{c} correspond ## to different @var{y} values. ! ## ! ## The @code{colormap} is scaled to the extents of @var{c}. ! ## Limits may be placed on the color axis by the ! ## command @code{caxis}, or by setting the @code{clim} property of the ! ## parent axis. ! ## ! ## The face color of each cell of the mesh is determined by interpolating ! ## the values of @var{c} for the cell's vertices. Contrast this with ! ## @code{imagesc} which renders one cell for each element of @var{c}. ! ## ! ## @code{shading} modifies an attribute determining the manner by which the ! ## face color of each cell is interpolated from the values of @var{c}, ! ## and the visibility of the cells' edges. By default the attribute is ! ## "faceted", which renders a single color for each cell's face with the edge ! ## visible. ! ## ! ## @var{h} is the handle to the surface object. ! ## ! ## @seealso{caxis, contour, meshgrid, imagesc, shading} ## @end deftypefn ## Author: Kai Habel diff -cNr octave-3.0.2/scripts/plot/plot.m octave-3.0.3/scripts/plot/plot.m *** octave-3.0.2/scripts/plot/plot.m 2008-08-01 08:32:28.000000000 +0200 --- octave-3.0.3/scripts/plot/plot.m 2008-09-24 09:13:48.000000000 +0200 *************** *** 106,114 **** ## @item . ## Set dots plot style. ## - ## @item ^ - ## Set impulses plot style. - ## ## @item L ## Set steps plot style. ## --- 106,111 ---- *************** *** 133,138 **** --- 130,136 ---- ## @itemx * ## @itemx o ## @itemx x + ## @itemx ^ ## Used in combination with the points or linespoints styles, set the point ## style. ## @end table diff -cNr octave-3.0.2/scripts/plot/scatter3.m octave-3.0.3/scripts/plot/scatter3.m *** octave-3.0.2/scripts/plot/scatter3.m 2008-08-01 08:32:28.000000000 +0200 --- octave-3.0.3/scripts/plot/scatter3.m 2008-09-24 09:13:48.000000000 +0200 *************** *** 24,34 **** ## @deftypefnx {Function File} {} scatter3 (@var{h}, @dots{}) ## @deftypefnx {Function File} {@var{h} =} scatter3 (@dots{}) ## ! ## Plot a scatter plot of the data in 3D. A marker is ploted at each point ! ## defined by the points in the vectors @var{x} and @var{y}. The size of ! ## the markers used is determined by the @var{s}, which can be a scalar, ! ## a vector of the same length of @var{x} and @var{y}. If @var{s} is not ! ## given or is an empty matrix, then the default value of 8 points is used. ## ## The color of the markers is determined by @var{c}, which can be a string ## defining a fixed color, a 3 element vector giving the red, green and blue --- 24,34 ---- ## @deftypefnx {Function File} {} scatter3 (@var{h}, @dots{}) ## @deftypefnx {Function File} {@var{h} =} scatter3 (@dots{}) ## ! ## Plot a scatter plot of the data in 3D. A marker is plotted at each point ! ## defined by the points in the vectors @var{x}, @var{y} and @var{z}. The size ! ## of the markers used is determined by @var{s}, which can be a scalar or ! ## a vector of the same length of @var{x}, @var{y} and @var{z}. If @var{s} is ! ## not given or is an empty matrix, then the default value of 8 points is used. ## ## The color of the markers is determined by @var{c}, which can be a string ## defining a fixed color, a 3 element vector giving the red, green and blue diff -cNr octave-3.0.2/scripts/plot/shading.m octave-3.0.3/scripts/plot/shading.m *** octave-3.0.2/scripts/plot/shading.m 2008-08-01 08:32:28.000000000 +0200 --- octave-3.0.3/scripts/plot/shading.m 2008-09-24 09:13:48.000000000 +0200 *************** *** 20,28 **** ## @deftypefn {Function File} {} shading (@var{type}) ## @deftypefnx {Function File} {} shading (@var{ax}, @dots{}) ## Set the shading of surface or patch graphic objects. Valid arguments ! ## for @var{type} are @code{"flat"}, @code{"interp"}, or ! ## @code{"faceted"}. If @var{ax} is given the shading is applied to ! ## axis @var{ax} instead of the current axis. ## @end deftypefn ## Author: Kai Habel --- 20,41 ---- ## @deftypefn {Function File} {} shading (@var{type}) ## @deftypefnx {Function File} {} shading (@var{ax}, @dots{}) ## Set the shading of surface or patch graphic objects. Valid arguments ! ## for @var{type} are ! ## ! ## @table @code ! ## @item "flat" ! ## Single colored patches with invisible edges. ! ## ! ## @item "faceted" ! ## Single colored patches with visible edges. ! ## ! ## @item "interp" ! ## Color between patch vertices are interpolated and the patch edges are ! ## invisible. ! ## @end table ! ## ! ## If @var{ax} is given the shading is applied to axis @var{ax} instead ! ## of the current axis. ## @end deftypefn ## Author: Kai Habel diff -cNr octave-3.0.2/scripts/statistics/base/ranks.m octave-3.0.3/scripts/statistics/base/ranks.m *** octave-3.0.2/scripts/statistics/base/ranks.m 2008-08-01 08:32:28.000000000 +0200 --- octave-3.0.3/scripts/statistics/base/ranks.m 2008-09-24 09:13:48.000000000 +0200 *************** *** 19,29 **** ## -*- texinfo -*- ## @deftypefn {Function File} {} ranks (@var{x}, @var{dim}) ! ## If @var{x} is a vector, return the (column) vector of ranks of ! ## @var{x} adjusted for ties. ! ## ! ## If @var{x} is a matrix, do the above for along the first ! ## non-singleton dimension. If the optional argument @var{dim} is ## given, operate along this dimension. ## @end deftypefn --- 19,26 ---- ## -*- texinfo -*- ## @deftypefn {Function File} {} ranks (@var{x}, @var{dim}) ! ## Return the ranks of @var{x} along the first non-singleton dimension ! ## adjust for ties. If the optional argument @var{dim} is ## given, operate along this dimension. ## @end deftypefn diff -cNr octave-3.0.2/scripts/statistics/distributions/binornd.m octave-3.0.3/scripts/statistics/distributions/binornd.m *** octave-3.0.2/scripts/statistics/distributions/binornd.m 2008-08-01 08:32:28.000000000 +0200 --- octave-3.0.3/scripts/statistics/distributions/binornd.m 2008-09-24 09:13:48.000000000 +0200 *************** *** 75,83 **** endif if (isscalar (n) && isscalar (p)) ! if (find (!(n > 0) | !(n < Inf) | !(n == round (n)) | !(p >= 0) | !(p <= 1))) rnd = NaN * ones (sz); else nel = prod (sz); tmp = rand (n, nel); --- 75,85 ---- endif if (isscalar (n) && isscalar (p)) ! if (find (!(n >= 0) | !(n < Inf) | !(n == round (n)) | !(p >= 0) | !(p <= 1))) rnd = NaN * ones (sz); + elseif (n == 0) + rnd = zeros (sz); else nel = prod (sz); tmp = rand (n, nel); *************** *** 87,93 **** else rnd = zeros (sz); ! k = find (!(n > 0) | !(n < Inf) | !(n == round (n)) | !(p >= 0) | !(p <= 1)); if (any (k)) rnd(k) = NaN; --- 89,95 ---- else rnd = zeros (sz); ! k = find (!(n >= 0) | !(n < Inf) | !(n == round (n)) | !(p >= 0) | !(p <= 1)); if (any (k)) rnd(k) = NaN; *************** *** 105,107 **** --- 107,112 ---- endif endfunction + + %!assert (binornd(0, 0, 1), 0) + %!assert (binornd([0, 0], [0, 0], 1, 2), [0, 0]) diff -cNr octave-3.0.2/scripts/statistics/distributions/chi2rnd.m octave-3.0.3/scripts/statistics/distributions/chi2rnd.m *** octave-3.0.2/scripts/statistics/distributions/chi2rnd.m 2008-08-01 08:32:28.000000000 +0200 --- octave-3.0.3/scripts/statistics/distributions/chi2rnd.m 2008-09-24 09:13:48.000000000 +0200 *************** *** 68,74 **** if (find (!(n > 0) | !(n < Inf))) rnd = NaN * ones (sz); else ! rnd = 2 * randg(n/2, sz) endif else [retval, n, dummy] = common_size (n, ones (sz)); --- 68,74 ---- if (find (!(n > 0) | !(n < Inf))) rnd = NaN * ones (sz); else ! rnd = 2 * randg(n/2, sz); endif else [retval, n, dummy] = common_size (n, ones (sz)); diff -cNr octave-3.0.2/src/ChangeLog octave-3.0.3/src/ChangeLog *** octave-3.0.2/src/ChangeLog 2008-08-20 07:28:21.000000000 +0200 --- octave-3.0.3/src/ChangeLog 2008-09-29 08:03:11.000000000 +0200 *************** *** 1,3 **** --- 1,128 ---- + 2008-09-24 Jaroslav Hajek + + Version 3.0.3 released. + + 2008-09-24 Thomas Weber + + * DLD-FUNCTIONS/regexp.cc (octregexp_list): Retry if match limit + is exceeded. + + 2008-09-24 John W. Eaton + + * load-path.cc (load_path::do_initialize): Check for OCTAVE_PATH + in the environment, not OCTAVE_LOADPATH. + + 2008-09-18 David Bateman + + * DLD-FUNCTIONS/fftw.cc (Ffftw): Clarify the documentation. + + 2008-09-19 David Bateman + + * debug.cc (static octave_user_function *get_user_function + (const std::string&)): Function lookup to force out of date check. + (bp_table::intmap bp_table::do_remove_all_breakpoints_in_file + (const std::string&, bool)): Add flag to silence the error message + from this function if a user code with breakpoints is not found. + (bp_table::fname_line_map bp_table::do_get_breakpoint_list (const + octave_value_list&)): Do an out of date check on the function + before checking the breakpoints. + * debug.h (do_remove_all_breakpoints_in_file, + remove_all_breakpoints_in_file): Add flag to silence error + message. + * variables.cc (static bool symbol_out_of_date (symbol_record*)): + If symbol out of date clear breakpoints. + + + * data.cc (SINGLE_TYPE_CONCAT, DO_SINGLE_TYPE_CONCAT): New macros + (do_cat): Special case single type concatenations for speed. + * pt.mat.cc (std::string get_concat_class (const std::string&, + const std::string&), void maybe_warn_string_concat (bool, bool)): + Remove static declaration. + * pt-mat.h (std::string get_concat_class (const std::string&, + const std::string&), void maybe_warn_string_concat (bool, bool)): + Define extern here. + + 2008-09-19 Jaroslav Hajek + + * load-path.cc: Fix errors from earlier transplant changeset. + * utils.cc: Likewise. + + 2008-09-10 John W. Eaton + + * octave.cc (octave_main): Make all command-line arguments + available to startup scripts and PKG_ADD files. + + 2008-05-20 Kim Hansen + + * load-path.cc (load_path::do_initialize): + Include separator when appending sys_path. + + 2008-09-09 David Bateman + + * DLD-FUNCTIONS/regexp.cc (octregexp_list): Distinguish between + matlab named tokens and perl lookbehind expressions. For + lookbehind expression replace "*" and "+" with a limited number of + fixed length expressions to simulate arbitrary length look behind. + + 2008-09-08 John W. Eaton + + * ls-oct-ascii.cc (std::string extract_keyword (std::istream&, + const char *, const bool)): Also accept \r as line ending character. + * ls-oct-ascii.h (template bool extract_keyword + (std::istream&, const char *, T&, const bool)): Likewise. + (template bool extract_keyword (std::istream&, const + string_vector&, std::string&, T&, const bool)): Likewise. + + 2008-08-27 Jaroslav Hajek + + * DLD-FUNCTIONS/__glpk__.cc (F__glpk__): Initialize output vectors + by NA value. + + 2008-05-20 Thomas Weber + + * DLD-FUNCTIONS/rand.cc: Doc fix. + + 2008-08-19 David Bateman + + * load-path.cc (load-path::do_find_dir (const std:string&) const)): + Method to find a directory on the load-path corresponding to the + argument. + * load-path.h (load-path::do_find_dir (const std:string&) const), + load-path::find_dir (const std::string&) const): New methods. + * utils.cc (std::string contents_file_in_path (const std::string&)): + New function. + * utils.h (std::string contents_file_in_path (const std::string&)): + Declare it. + * help.cc (static bool raw_help_from_file (const std::string&, + std::string&, std::string&, bool&)): Also check is requested + argument is a directory and contains the file Contents.m. + + 2008-08-19 Jaroslav Hajek + + * pt-assign.h (tree_simple_assignment::first_execution): New + member field. + (tree_simple_assignment::first_execution): Dtto. + * pt-assign.cc (tree_simple_assignment::tree_simple_assignment): + Initialize first_execution. + (tree_multi_assignment::tree_multi_assignment): Dtto. + (tree_simple_assignment::rvalue): Check for obsolete built-in + variables only at first execution. + (tree_multi_assignment::rvalue): Dtto. + + * DLD-FUNCTIONS/__glpk__.cc (F__glpk__): Checks whether LB and UB are + of proper size. + + * oct-obj.cc, oct-obj.h (octave_value_list::make_argv): + Allow calling without fcn_name. + * load-save.cc (parse_save_options (const string_vector&, ...)): + Return string_vector with parsed arguments removed instead. + (parse_save_options (const std::string&, ...)): Dtto. + (Fsave): Fix calls to parse_save_options. + + 2008-08-19 John W. Eaton + + * parse.y (Feval): Return value produced by evaluating CATCH string. + 2008-08-19 Jaroslav Hajek Version 3.0.2 released. diff -cNr octave-3.0.2/src/data.cc octave-3.0.3/src/data.cc *** octave-3.0.2/src/data.cc 2008-08-01 08:50:56.000000000 +0200 --- octave-3.0.3/src/data.cc 2008-09-24 09:13:49.000000000 +0200 *************** *** 785,790 **** --- 785,836 ---- DATA_REDUCTION (prod); } + + #define SINGLE_TYPE_CONCAT(TYPE, EXTRACTOR) \ + do \ + { \ + int dv_len = dv.length (); \ + Array ra_idx (dv_len > 1 ? dv_len : 2, 0); \ + \ + for (int j = 1; j < n_args; j++) \ + { \ + OCTAVE_QUIT; \ + \ + TYPE ra = args(j).EXTRACTOR (); \ + \ + if (! error_state) \ + { \ + result.insert (ra, ra_idx); \ + \ + if (error_state) \ + return retval; \ + \ + dim_vector dv_tmp = args (j).dims (); \ + \ + if (dim >= dv_len) \ + { \ + if (j > 1) \ + error ("%s: indexing error", fname.c_str ()); \ + break; \ + } \ + else \ + ra_idx (dim) += (dim < dv_tmp.length () ? dv_tmp (dim) : 1); \ + } \ + } \ + } \ + while (0) + + #define DO_SINGLE_TYPE_CONCAT(TYPE, EXTRACTOR) \ + do \ + { \ + TYPE result (dv); \ + \ + SINGLE_TYPE_CONCAT(TYPE, EXTRACTOR); \ + \ + retval = result; \ + } \ + while (0) + static octave_value do_cat (const octave_value_list& args, std::string fname) { *************** *** 810,815 **** --- 856,868 ---- { dim_vector dv = args(1).dims (); + std::string result_type = args(1).class_name (); + + bool all_sq_strings_p = args(1).is_sq_string (); + bool all_dq_strings_p = args(1).is_dq_string (); + bool all_real_p = args(1).is_real_type (); + bool any_sparse_p = args(1).is_sparse_type(); + for (int i = 2; i < args.length (); i++) { *************** *** 822,890 **** error ("cat: dimension mismatch"); return retval; } - } ! // The lines below might seem crazy, since we take a copy ! // of the first argument, resize it to be empty and then resize ! // it to be full. This is done since it means that there is no ! // recopying of data, as would happen if we used a single resize. ! // It should be noted that resize operation is also significantly ! // slower than the do_cat_op function, so it makes sense to have an ! // empty matrix and copy all data. ! // ! // We might also start with a empty octave_value using ! // tmp = octave_value_typeinfo::lookup_type (args(1).type_name()); ! // and then directly resize. However, for some types there might be ! // some additional setup needed, and so this should be avoided. ! octave_value tmp; ! int i; ! for (i = 1; i < n_args; i++) { ! if (! args (i).all_zero_dims ()) { ! tmp = args (i); ! break; } } ! if (i == n_args) ! retval = Matrix (); else { ! tmp = tmp.resize (dim_vector (0,0)).resize (dv); ! if (error_state) ! return retval; ! int dv_len = dv.length (); ! Array ra_idx (dv_len, 0); ! ! for (int j = i; j < n_args; j++) { ! if (args (j). dims (). any_zero ()) ! continue; ! tmp = do_cat_op (tmp, args (j), ra_idx); if (error_state) return retval; ! dim_vector dv_tmp = args (j).dims (); ! if (dim >= dv_len) { ! if (j > i) ! error ("%s: indexing error", fname.c_str ()); ! break; } - else - ra_idx (dim) += (dim < dv_tmp.length () ? - dv_tmp (dim) : 1); - } ! retval = tmp; } } else --- 875,1017 ---- error ("cat: dimension mismatch"); return retval; } ! result_type = ! get_concat_class (result_type, args(i).class_name ()); ! if (all_sq_strings_p && ! args(i).is_sq_string ()) ! all_sq_strings_p = false; ! if (all_dq_strings_p && ! args(i).is_dq_string ()) ! all_dq_strings_p = false; ! if (all_real_p && ! args(i).is_real_type ()) ! all_real_p = false; ! if (!any_sparse_p && args(i).is_sparse_type ()) ! any_sparse_p = true; ! } ! if (result_type == "double") { ! if (any_sparse_p) ! { ! if (all_real_p) ! DO_SINGLE_TYPE_CONCAT (SparseMatrix, sparse_matrix_value); ! else ! DO_SINGLE_TYPE_CONCAT (SparseComplexMatrix, sparse_complex_matrix_value); ! } ! else { ! if (all_real_p) ! DO_SINGLE_TYPE_CONCAT (NDArray, array_value); ! else ! DO_SINGLE_TYPE_CONCAT (ComplexNDArray, complex_array_value); } } + else if (result_type == "char") + { + char type = all_dq_strings_p ? '"' : '\''; + + maybe_warn_string_concat (all_dq_strings_p, all_sq_strings_p); + + charNDArray result (dv, Vstring_fill_char); ! SINGLE_TYPE_CONCAT (charNDArray, char_array_value); ! ! retval = octave_value (result, true, type); ! } ! else if (result_type == "logical") ! { ! if (any_sparse_p) ! DO_SINGLE_TYPE_CONCAT (SparseBoolMatrix, sparse_bool_matrix_value); ! else ! DO_SINGLE_TYPE_CONCAT (boolNDArray, bool_array_value); ! } ! else if (result_type == "int8") ! DO_SINGLE_TYPE_CONCAT (int8NDArray, int8_array_value); ! else if (result_type == "int16") ! DO_SINGLE_TYPE_CONCAT (int16NDArray, int16_array_value); ! else if (result_type == "int32") ! DO_SINGLE_TYPE_CONCAT (int32NDArray, int32_array_value); ! else if (result_type == "int64") ! DO_SINGLE_TYPE_CONCAT (int64NDArray, int64_array_value); ! else if (result_type == "uint8") ! DO_SINGLE_TYPE_CONCAT (uint8NDArray, uint8_array_value); ! else if (result_type == "uint16") ! DO_SINGLE_TYPE_CONCAT (uint16NDArray, uint16_array_value); ! else if (result_type == "uint32") ! DO_SINGLE_TYPE_CONCAT (uint32NDArray, uint32_array_value); ! else if (result_type == "uint64") ! DO_SINGLE_TYPE_CONCAT (uint64NDArray, uint64_array_value); else { ! // The lines below might seem crazy, since we take a copy ! // of the first argument, resize it to be empty and then resize ! // it to be full. This is done since it means that there is no ! // recopying of data, as would happen if we used a single resize. ! // It should be noted that resize operation is also significantly ! // slower than the do_cat_op function, so it makes sense to have ! // an empty matrix and copy all data. ! // ! // We might also start with a empty octave_value using ! // tmp = octave_value_typeinfo::lookup_type ! // (args(1).type_name()); ! // and then directly resize. However, for some types there might ! // be some additional setup needed, and so this should be avoided. ! octave_value tmp; ! int i; ! for (i = 1; i < n_args; i++) { ! if (! args (i).all_zero_dims ()) ! { ! tmp = args (i); ! break; ! } ! } ! if (i == n_args) ! retval = Matrix (); ! else ! { ! tmp = tmp.resize (dim_vector (0,0)).resize (dv); if (error_state) return retval; ! int dv_len = dv.length (); ! Array ra_idx (dv_len, 0); ! for (int j = i; j < n_args; j++) { ! if (args (j). dims (). any_zero ()) ! continue; ! ! tmp = do_cat_op (tmp, args (j), ra_idx); ! ! if (error_state) ! return retval; ! ! dim_vector dv_tmp = args (j).dims (); ! ! if (dim >= dv_len) ! { ! if (j > i) ! error ("%s: indexing error", fname.c_str ()); ! break; ! } ! else ! ra_idx (dim) += (dim < dv_tmp.length () ? ! dv_tmp (dim) : 1); } ! retval = tmp; ! } ! } ! if (! error_state) ! { ! // Reshape, chopping trailing singleton dimensions ! dv.chop_trailing_singletons (); ! retval = retval.reshape (dv); } } else diff -cNr octave-3.0.2/src/debug.cc octave-3.0.3/src/debug.cc *** octave-3.0.2/src/debug.cc 2008-08-01 08:50:56.000000000 +0200 --- octave-3.0.3/src/debug.cc 2008-09-29 07:36:19.000000000 +0200 *************** *** 75,80 **** --- 75,84 ---- if (ptr && ptr->is_user_function ()) { + // Do a lookup on the symbol record to force an + // out of date check on the function + lookup (ptr); + octave_value tmp = ptr->def (); dbg_fcn = dynamic_cast (tmp.function_value ()); } *************** *** 241,247 **** bp_table::intmap ! bp_table::do_remove_all_breakpoints_in_file (const std::string& fname) { intmap retval; --- 245,252 ---- bp_table::intmap ! bp_table::do_remove_all_breakpoints_in_file (const std::string& fname, ! bool silent) { intmap retval; *************** *** 264,270 **** if (it != bp_map.end ()) bp_map.erase (it); } ! else error ("remove_all_breakpoint_in_file: " "unable to find the function requested\n"); --- 269,275 ---- if (it != bp_map.end ()) bp_map.erase (it); } ! else if (! silent) error ("remove_all_breakpoint_in_file: " "unable to find the function requested\n"); *************** *** 310,325 **** if (fname_list.length () == 0 || do_find_bkpt_list (fname_list, it->first) != "") { ! octave_value_list bkpts = it->second->body ()->list_breakpoints (); ! octave_idx_type len = bkpts.length (); ! bp_table::intmap bkpts_vec; ! for (int i = 0; i < len; i++) ! bkpts_vec[i] = bkpts (i).double_value (); ! retval[it->first] = bkpts_vec; } } --- 315,344 ---- if (fname_list.length () == 0 || do_find_bkpt_list (fname_list, it->first) != "") { ! if (! fcn_out_of_date (it->second, it->second->fcn_file_name (), ! it->second->time_parsed (). unix_time())) ! { ! octave_value_list bkpts = ! it->second->body ()->list_breakpoints (); ! octave_idx_type len = bkpts.length (); ! if (len > 0) ! { ! bp_table::intmap bkpts_vec; ! for (int i = 0; i < len; i++) ! bkpts_vec[i] = bkpts (i).double_value (); ! retval[it->first] = bkpts_vec; ! } ! } ! else ! { ! symbol_record *sr = fbi_sym_tab->lookup (it->first); ! if (sr && sr->is_function ()) ! lookup (sr); ! } } } diff -cNr octave-3.0.2/src/debug.h octave-3.0.3/src/debug.h *** octave-3.0.2/src/debug.h 2008-08-01 08:32:28.000000000 +0200 --- octave-3.0.3/src/debug.h 2008-09-29 07:36:19.000000000 +0200 *************** *** 85,94 **** } // Remove all the breakpoints in a specified file. ! static intmap remove_all_breakpoints_in_file (const std::string& fname) { return instance_ok () ! ? instance->do_remove_all_breakpoints_in_file (fname) : intmap (); } // Remove all the breakpoints registered with octave. --- 85,95 ---- } // Remove all the breakpoints in a specified file. ! static intmap remove_all_breakpoints_in_file (const std::string& fname, ! bool silent = false) { return instance_ok () ! ? instance->do_remove_all_breakpoints_in_file (fname, silent) : intmap (); } // Remove all the breakpoints registered with octave. *************** *** 124,130 **** int do_remove_breakpoint (const std::string&, const intmap& lines); ! intmap do_remove_all_breakpoints_in_file (const std::string& fname); void do_remove_all_breakpoints (void); --- 125,132 ---- int do_remove_breakpoint (const std::string&, const intmap& lines); ! intmap do_remove_all_breakpoints_in_file (const std::string& fname, ! bool silent); void do_remove_all_breakpoints (void); diff -cNr octave-3.0.2/src/DLD-FUNCTIONS/cellfun.cc octave-3.0.3/src/DLD-FUNCTIONS/cellfun.cc *** octave-3.0.2/src/DLD-FUNCTIONS/cellfun.cc 2008-08-01 08:32:28.000000000 +0200 --- octave-3.0.3/src/DLD-FUNCTIONS/cellfun.cc 2008-09-24 09:13:49.000000000 +0200 *************** *** 535,542 **** DEFUN_DLD (num2cell, args, , "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{c} =} num2cell (@var{m})\n\ ! @deftypefnx {Loadable Function} {@var{c} =} num2cell (@var{m}, @var{d})\n\ ! Convert to matrix @var{m} into a cell array. If @var{d} is defined the\n\ value @var{c} is of dimension 1 in this dimension and the elements of\n\ @var{m} are placed in slices in @var{c}.\n\ @seealso{mat2cell}\n\ --- 535,542 ---- DEFUN_DLD (num2cell, args, , "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{c} =} num2cell (@var{m})\n\ ! @deftypefnx {Loadable Function} {@var{c} =} num2cell (@var{m}, @var{dim})\n\ ! Convert the matrix @var{m} into a cell array. If @var{dim} is defined, the\n\ value @var{c} is of dimension 1 in this dimension and the elements of\n\ @var{m} are placed in slices in @var{c}.\n\ @seealso{mat2cell}\n\ *************** *** 633,639 **** @deftypefn {Loadable Function} {@var{b} =} mat2cell (@var{a}, @var{m}, @var{n})\n\ @deftypefnx {Loadable Function} {@var{b} =} mat2cell (@var{a}, @var{d1}, @var{d2}, @dots{})\n\ @deftypefnx {Loadable Function} {@var{b} =} mat2cell (@var{a}, @var{r})\n\ ! Converts the matrix @var{a} to a cell array If @var{a} is 2-D, then\n\ it is required that @code{sum (@var{m}) == size (@var{a}, 1)} and\n\ @code{sum (@var{n}) == size (@var{a}, 2)}. Similarly, if @var{a} is\n\ a multi-dimensional and the number of dimensional arguments is equal\n\ --- 633,639 ---- @deftypefn {Loadable Function} {@var{b} =} mat2cell (@var{a}, @var{m}, @var{n})\n\ @deftypefnx {Loadable Function} {@var{b} =} mat2cell (@var{a}, @var{d1}, @var{d2}, @dots{})\n\ @deftypefnx {Loadable Function} {@var{b} =} mat2cell (@var{a}, @var{r})\n\ ! Convert the matrix @var{a} to a cell array. If @var{a} is 2-D, then\n\ it is required that @code{sum (@var{m}) == size (@var{a}, 1)} and\n\ @code{sum (@var{n}) == size (@var{a}, 2)}. Similarly, if @var{a} is\n\ a multi-dimensional and the number of dimensional arguments is equal\n\ diff -cNr octave-3.0.2/src/DLD-FUNCTIONS/fftw.cc octave-3.0.3/src/DLD-FUNCTIONS/fftw.cc *** octave-3.0.2/src/DLD-FUNCTIONS/fftw.cc 2008-08-01 08:32:28.000000000 +0200 --- octave-3.0.3/src/DLD-FUNCTIONS/fftw.cc 2008-09-24 09:13:49.000000000 +0200 *************** *** 42,58 **** \n\ Manage FFTW wisdom data. Wisdom data can be used to significantly\n\ accelerate the calculation of the FFTs but implies an initial cost\n\ ! in its calculation. The wisdom used by Octave can be imported directly,\n\ ! usually from a file /etc/fftw/wisdom, or @dfn{fftw} can be used\n\ ! to import wisdom. For example\n\ \n\ @example\n\ @var{wisdom} = fftw ('dwisdom')\n\ @end example\n\ \n\ will save the existing wisdom used by Octave to the string @var{wisdom}.\n\ ! This string can then be saved in the usual manner. This existing wisdom\n\ ! can be reimported as follows\n\ \n\ @example\n\ fftw ('dwisdom', @var{wisdom})\n\ --- 42,60 ---- \n\ Manage FFTW wisdom data. Wisdom data can be used to significantly\n\ accelerate the calculation of the FFTs but implies an initial cost\n\ ! in its calculation. When the FFTW libraries are initialized, they read\n\ ! a system wide wisdom file (typically in @file{/etc/fftw/wisdom}), allowing wisdom\n\ ! to be shared between applications other than Octave. Alternatively, the\n\ ! @code{fftw} function can be used to import wisdom. For example\n\ \n\ @example\n\ @var{wisdom} = fftw ('dwisdom')\n\ @end example\n\ \n\ will save the existing wisdom used by Octave to the string @var{wisdom}.\n\ ! This string can then be saved to a file and restored using the @code{save}\n\ ! and @code{load} commands respectively. This existing wisdom can be reimported\n\ ! as follows\n\ \n\ @example\n\ fftw ('dwisdom', @var{wisdom})\n\ *************** *** 62,68 **** \n\ During the calculation of fourier transforms further wisdom is generated.\n\ The fashion in which this wisdom is generated is equally controlled by\n\ ! the @dfn{fftw} function. There are five different manners in which the\n\ wisdom can be treated, these being\n\ \n\ @table @asis\n\ --- 64,70 ---- \n\ During the calculation of fourier transforms further wisdom is generated.\n\ The fashion in which this wisdom is generated is equally controlled by\n\ ! the @code{fftw} function. There are five different manners in which the\n\ wisdom can be treated, these being\n\ \n\ @table @asis\n\ *************** *** 105,114 **** \n\ Note that calculated wisdom will be lost when restarting Octave. However,\n\ the wisdom data can be reloaded if it is saved to a file as described\n\ ! above. Also, any system-wide wisdom file that has been found will\n\ ! also be used. Saved wisdom files should not be used on different\n\ ! platforms since they will not be efficient and the point of calculating\n\ ! the wisdom is lost.\n\ @seealso{fft, ifft, fft2, ifft2, fftn, ifftn}\n\ @end deftypefn") { --- 107,114 ---- \n\ Note that calculated wisdom will be lost when restarting Octave. However,\n\ the wisdom data can be reloaded if it is saved to a file as described\n\ ! above. Saved wisdom files should not be used on different platforms since\n\ ! they will not be efficient and the point of calculating the wisdom is lost.\n\ @seealso{fft, ifft, fft2, ifft2, fftn, ifftn}\n\ @end deftypefn") { diff -cNr octave-3.0.2/src/DLD-FUNCTIONS/__glpk__.cc octave-3.0.3/src/DLD-FUNCTIONS/__glpk__.cc *** octave-3.0.2/src/DLD-FUNCTIONS/__glpk__.cc 2008-08-01 08:32:28.000000000 +0200 --- octave-3.0.3/src/DLD-FUNCTIONS/__glpk__.cc 2008-09-24 09:13:49.000000000 +0200 *************** *** 575,581 **** //-- bound on each of the variables. Matrix LB (args(3).matrix_value ()); ! if (error_state) { error ("__glpk__: invalid value of lb"); return retval; --- 575,581 ---- //-- bound on each of the variables. Matrix LB (args(3).matrix_value ()); ! if (error_state || LB.length () < mrowsc) { error ("__glpk__: invalid value of lb"); return retval; *************** *** 600,606 **** //-- bound on each of the variables. Matrix UB (args(4).matrix_value ()); ! if (error_state) { error ("__glpk__: invalid value of ub"); return retval; --- 600,606 ---- //-- bound on each of the variables. Matrix UB (args(4).matrix_value ()); ! if (error_state || UB.length () < mrowsc) { error ("__glpk__: invalid value of ub"); return retval; *************** *** 801,811 **** OCTAVE_GLPK_GET_REAL_PARAM ("tolobj", 9); //-- Assign pointers to the output parameters ! ColumnVector xmin (mrowsc); ! ColumnVector fmin (1); ColumnVector status (1); ! ColumnVector lambda (mrowsA); ! ColumnVector redcosts (mrowsc); ColumnVector time (1); ColumnVector mem (1); --- 801,811 ---- OCTAVE_GLPK_GET_REAL_PARAM ("tolobj", 9); //-- Assign pointers to the output parameters ! ColumnVector xmin (mrowsc, octave_NA); ! ColumnVector fmin (1, octave_NA); ColumnVector status (1); ! ColumnVector lambda (mrowsA, octave_NA); ! ColumnVector redcosts (mrowsc, octave_NA); ColumnVector time (1); ColumnVector mem (1); diff -cNr octave-3.0.2/src/DLD-FUNCTIONS/rand.cc octave-3.0.3/src/DLD-FUNCTIONS/rand.cc *** octave-3.0.2/src/DLD-FUNCTIONS/rand.cc 2008-08-20 07:28:21.000000000 +0200 --- octave-3.0.3/src/DLD-FUNCTIONS/rand.cc 2008-09-24 09:13:49.000000000 +0200 *************** *** 471,478 **** @deftypefnx {Loadable Function} {} randn (@var{n}, @var{m})\n\ @deftypefnx {Loadable Function} {} randn (\"state\", @var{x})\n\ @deftypefnx {Loadable Function} {} randn (\"seed\", @var{x})\n\ ! Return a matrix with normally distributed random elements. The\n\ ! arguments are handled the same as the arguments for @code{rand}.\n\ \n\ By default, @code{randn} uses a Marsaglia and Tsang Ziggurat technique to\n\ transform from a uniform to a normal distribution. (G. Marsaglia and\n\ --- 471,479 ---- @deftypefnx {Loadable Function} {} randn (@var{n}, @var{m})\n\ @deftypefnx {Loadable Function} {} randn (\"state\", @var{x})\n\ @deftypefnx {Loadable Function} {} randn (\"seed\", @var{x})\n\ ! Return a matrix with normally distributed pseudo-random\n\ ! elements having zero mean and variance one. The arguments are\n\ ! handled the same as the arguments for @code{rand}.\n\ \n\ By default, @code{randn} uses a Marsaglia and Tsang Ziggurat technique to\n\ transform from a uniform to a normal distribution. (G. Marsaglia and\n\ *************** *** 950,956 **** %!test %! % Test fixed state %! randp("seed",1); ! %! assert(randp(1e9,1,6),[1000006208 1000012224 999981120 999963520 999963072 999981440],1e-6)) %!test %! if (__random_statistical_tests__) %! % statistical tests may fail occasionally. --- 951,957 ---- %!test %! % Test fixed state %! randp("seed",1); ! %! assert(randp(1e9,1,6),[1000006208 1000012224 999981120 999963520 999963072 999981440],1e-6) %!test %! if (__random_statistical_tests__) %! % statistical tests may fail occasionally. diff -cNr octave-3.0.2/src/DLD-FUNCTIONS/regexp.cc octave-3.0.3/src/DLD-FUNCTIONS/regexp.cc *** octave-3.0.2/src/DLD-FUNCTIONS/regexp.cc 2008-08-01 08:50:56.000000000 +0200 --- octave-3.0.3/src/DLD-FUNCTIONS/regexp.cc 2008-09-29 07:36:19.000000000 +0200 *************** *** 52,57 **** --- 52,61 ---- #include #endif + // Define the maximum number of retries for a pattern that + // possibly results in an infinite recursion. + #define PCRE_MATCHLIMIT_MAX 10 + // The regexp is constructed as a linked list to avoid resizing the // return values in arrays at each new match. *************** *** 80,85 **** --- 84,92 ---- typedef std::list::const_iterator const_iterator; + #define MAXLOOKBEHIND 10 + static bool lookbehind_warned = false; + static int octregexp_list (const octave_value_list &args, const std::string &nm, bool case_insensitive, std::list &lst, *************** *** 96,101 **** --- 103,111 ---- once = false; std::string buffer = args(0).string_value (); + size_t max_length = (buffer.length () > MAXLOOKBEHIND ? + MAXLOOKBEHIND: buffer.length ()); + if (error_state) { gripe_wrong_type_arg (nm.c_str(), args(0)); *************** *** 190,201 **** // named tokens "(?...)" are only treated with PCRE not regex. #if HAVE_PCRE - // The syntax of named tokens in pcre is "(?P...)" while we need - // a syntax "(?...)", so fix that here. Also an expression like - // "(?\w+)\s+(?\w+)|(?\w+),\s+(?\w+)" should - // be perfectly legal, while pcre does not allow the same named token - // name on both sides of the alternative. Also fix that here by replacing - // name tokens by dummy names, and dealing with the dummy names later. size_t pos = 0; size_t new_pos; --- 200,205 ---- *************** *** 204,247 **** std::ostringstream buf; Array named_idx; ! while ((new_pos = pattern.find ("(?<",pos)) != NPOS) { ! size_t tmp_pos = pattern.find_first_of ('>',new_pos); ! ! if (tmp_pos == NPOS) { ! error ("syntax error in pattern"); ! break; } ! std::string tmp_name = pattern.substr(new_pos+3,tmp_pos-new_pos-3); ! bool found = false; ! for (int i = 0; i < nnames; i++) ! if (named(i) == tmp_name) ! { ! named_idx.resize(inames+1); ! named_idx(inames) = i; ! found = true; ! break; ! } ! if (! found) { ! named_idx.resize(inames+1); ! named_idx(inames) = nnames; ! named.append(tmp_name); ! nnames++; } - if (new_pos - pos > 0) - buf << pattern.substr(pos,new_pos-pos); - if (inames < 10) - buf << "(?P named_idx; ! while ((new_pos = pattern.find ("(?",pos)) != NPOS) { ! if (pattern.at (new_pos + 2) == '<' && ! !(pattern.at (new_pos + 3) == '=' || ! pattern.at (new_pos + 3) == '!')) { ! // The syntax of named tokens in pcre is "(?P...)" while ! // we need a syntax "(?...)", so fix that here. Also an ! // expression like ! // "(?\w+)\s+(?\w+)|(?\w+),\s+(?\w+)" ! // should be perfectly legal, while pcre does not allow the same ! // named token name on both sides of the alternative. Also fix ! // that here by replacing name tokens by dummy names, and dealing ! // with the dummy names later. ! ! size_t tmp_pos = pattern.find_first_of ('>',new_pos); ! ! if (tmp_pos == NPOS) ! { ! error ("syntax error in pattern"); ! break; ! } ! ! std::string tmp_name = ! pattern.substr(new_pos+3,tmp_pos-new_pos-3); ! bool found = false; ! ! for (int i = 0; i < nnames; i++) ! if (named(i) == tmp_name) ! { ! named_idx.resize(inames+1); ! named_idx(inames) = i; ! found = true; ! break; ! } ! if (! found) ! { ! named_idx.resize(inames+1); ! named_idx(inames) = nnames; ! named.append(tmp_name); ! nnames++; ! } ! ! if (new_pos - pos > 0) ! buf << pattern.substr(pos,new_pos-pos); ! if (inames < 10) ! buf << "(?P 0) + { + char ch = pattern.at (tmp_pos1); + if (ch == '(') + brackets++; + else if (ch == ')') + { + if (brackets > 1) + tmp_pos2 = tmp_pos1; ! brackets--; ! } ! tmp_pos1++; ! } ! if (brackets != 0) ! { ! buf << pattern.substr (pos, new_pos - pos) << "(?"; ! pos = new_pos + 2; ! } ! else ! { ! size_t tmp_pos3 = pattern.find_first_of ("*+", tmp_pos2); ! if (tmp_pos3 != NPOS && tmp_pos3 < tmp_pos1) ! { ! if (!lookbehind_warned) ! { ! lookbehind_warned = true; ! warning ("%s: arbitrary length lookbehind patterns are only support up to length %d", nm.c_str(), MAXLOOKBEHIND); ! } ! ! buf << pattern.substr (pos, new_pos - pos) << "("; ! ! size_t i; ! if (pattern.at (tmp_pos3) == '*') ! i = 0; ! else ! i = 1; ! ! for (; i < max_length + 1; i++) ! { ! buf < (&pe.match_limit)); + pe.flags = PCRE_EXTRA_MATCH_LIMIT; + + int i = 0; + while (matches == PCRE_ERROR_MATCHLIMIT && + i++ < PCRE_MATCHLIMIT_MAX) + { + OCTAVE_QUIT; + + pe.match_limit *= 10; + matches = pcre_exec(re, &pe, buffer.c_str(), + buffer.length(), idx, + (idx ? PCRE_NOTBOL : 0), + ovector, (subpatterns+1)*3); + } + } + if (matches < 0 && matches != PCRE_ERROR_NOMATCH) { ! error ("%s: internal error calling pcre_exec\nError code from pcre_exec is %i", nm.c_str(), matches); pcre_free(re); return 0; } *************** *** 897,902 **** --- 1010,1026 ---- /* + ## PCRE_ERROR_MATCHLIMIT test + %!test + %! s=sprintf('\t4\n0000\t-0.00\t-0.0000\t4\t-0.00\t-0.0000\t4\n0000\t-0.00\t-0.0000\t0\t-0.00\t-'); + %! ws = warning("query"); + %! unwind_protect + %! warning("off"); + %! regexp(s, '(\s*-*\d+[.]*\d*\s*)+\n'); + %! unwind_protect_cleanup + %! warning(ws); + %! end_unwind_protect + ## seg-fault test %!assert(regexp("abcde","."),[1,2,3,4,5]) *************** *** 1042,1047 **** --- 1166,1181 ---- %!assert(regexp({'asdfg-dfd';'-dfd-dfd-';'qasfdfdaq'},{'-';'f';'q'}),{6;[3,7];[1,9]}) %!assert(regexp('Strings',{'t','s'}),{2,7}) + ## Test case for lookaround operators + %!assert(regexp('Iraq','q(?!u)'),4) + %!assert(regexp('quit','q(?!u)'), zeros(1,0)) + %!assert(regexp('quit','q(?=u)','match'), {'q'}) + %!assert(regexp("quit",'q(?=u+)','match'), {'q'}) + %!assert(regexp("qit",'q(?=u+)','match'), cell(1,0)) + %!assert(regexp("qit",'q(?=u*)','match'), {'q'}) + + %!assert(regexp('thingamabob','(?<=a)b'), 9) + */ DEFUN_DLD (regexpi, args, nargout, *************** *** 1569,1574 **** --- 1703,1711 ---- %!assert(regexprep({"abc","cba"},"b","?"),{"a?c","c?a"}) %!assert(regexprep({"abc","cba"},{"b","a"},{"?","!"}),{"!?c","c?!"}) + # Nasty lookbehind expression + %!assert(regexprep('x^(-1)+y(-1)+z(-1)=0','(?<=[a-z]+)\(\-[1-9]*\)','_minus1'),'x^(-1)+y_minus1+z_minus1=0') + */ /* diff -cNr octave-3.0.2/src/DLD-FUNCTIONS/typecast.cc octave-3.0.3/src/DLD-FUNCTIONS/typecast.cc *** octave-3.0.2/src/DLD-FUNCTIONS/typecast.cc 2008-08-01 08:32:28.000000000 +0200 --- octave-3.0.3/src/DLD-FUNCTIONS/typecast.cc 2008-09-24 09:13:49.000000000 +0200 *************** *** 125,131 **** DEFUN_DLD (typecast, args, , " -*- texinfo -*-\n\ @deftypefn {Loadable Function} {} typecast (@var{x}, @var{type})\n\ ! Converts from one datatype to another without changing the underlying\n\ data. The argument @var{type} defines the type of the return argument\n\ and must be one of 'uint8', 'uint16', 'uint32', 'uint64', 'int8', 'int16',\n\ 'int32', 'int64', 'single' or 'double'.\n\ --- 125,131 ---- DEFUN_DLD (typecast, args, , " -*- texinfo -*-\n\ @deftypefn {Loadable Function} {} typecast (@var{x}, @var{type})\n\ ! Convert from one datatype to another without changing the underlying\n\ data. The argument @var{type} defines the type of the return argument\n\ and must be one of 'uint8', 'uint16', 'uint32', 'uint64', 'int8', 'int16',\n\ 'int32', 'int64', 'single' or 'double'.\n\ diff -cNr octave-3.0.2/src/DOCSTRINGS octave-3.0.3/src/DOCSTRINGS *** octave-3.0.2/src/DOCSTRINGS 2008-08-14 13:41:59.000000000 +0200 --- octave-3.0.3/src/DOCSTRINGS 2008-09-24 10:31:10.000000000 +0200 *************** *** 756,763 **** num2cell -*- texinfo -*- @deftypefn {Loadable Function} {@var{c} =} num2cell (@var{m}) ! @deftypefnx {Loadable Function} {@var{c} =} num2cell (@var{m}, @var{d}) ! Convert to matrix @var{m} into a cell array. If @var{d} is defined the value @var{c} is of dimension 1 in this dimension and the elements of @var{m} are placed in slices in @var{c}. @seealso{mat2cell} --- 756,763 ---- num2cell -*- texinfo -*- @deftypefn {Loadable Function} {@var{c} =} num2cell (@var{m}) ! @deftypefnx {Loadable Function} {@var{c} =} num2cell (@var{m}, @var{dim}) ! Convert the matrix @var{m} into a cell array. If @var{dim} is defined, the value @var{c} is of dimension 1 in this dimension and the elements of @var{m} are placed in slices in @var{c}. @seealso{mat2cell} *************** *** 767,773 **** @deftypefn {Loadable Function} {@var{b} =} mat2cell (@var{a}, @var{m}, @var{n}) @deftypefnx {Loadable Function} {@var{b} =} mat2cell (@var{a}, @var{d1}, @var{d2}, @dots{}) @deftypefnx {Loadable Function} {@var{b} =} mat2cell (@var{a}, @var{r}) ! Converts the matrix @var{a} to a cell array If @var{a} is 2-D, then it is required that @code{sum (@var{m}) == size (@var{a}, 1)} and @code{sum (@var{n}) == size (@var{a}, 2)}. Similarly, if @var{a} is a multi-dimensional and the number of dimensional arguments is equal --- 767,773 ---- @deftypefn {Loadable Function} {@var{b} =} mat2cell (@var{a}, @var{m}, @var{n}) @deftypefnx {Loadable Function} {@var{b} =} mat2cell (@var{a}, @var{d1}, @var{d2}, @dots{}) @deftypefnx {Loadable Function} {@var{b} =} mat2cell (@var{a}, @var{r}) ! Convert the matrix @var{a} to a cell array. If @var{a} is 2-D, then it is required that @code{sum (@var{m}) == size (@var{a}, 1)} and @code{sum (@var{n}) == size (@var{a}, 2)}. Similarly, if @var{a} is a multi-dimensional and the number of dimensional arguments is equal *************** *** 3175,3191 **** Manage FFTW wisdom data. Wisdom data can be used to significantly accelerate the calculation of the FFTs but implies an initial cost ! in its calculation. The wisdom used by Octave can be imported directly, ! usually from a file /etc/fftw/wisdom, or @dfn{fftw} can be used ! to import wisdom. For example @example @var{wisdom} = fftw ('dwisdom') @end example will save the existing wisdom used by Octave to the string @var{wisdom}. ! This string can then be saved in the usual manner. This existing wisdom ! can be reimported as follows @example fftw ('dwisdom', @var{wisdom}) --- 3175,3193 ---- Manage FFTW wisdom data. Wisdom data can be used to significantly accelerate the calculation of the FFTs but implies an initial cost ! in its calculation. When the FFTW libraries are initialized, they read ! a system wide wisdom file (typically in @file{/etc/fftw/wisdom}), allowing wisdom ! to be shared between applications other than Octave. Alternatively, the ! @code{fftw} function can be used to import wisdom. For example @example @var{wisdom} = fftw ('dwisdom') @end example will save the existing wisdom used by Octave to the string @var{wisdom}. ! This string can then be saved to a file and restored using the @code{save} ! and @code{load} commands respectively. This existing wisdom can be reimported ! as follows @example fftw ('dwisdom', @var{wisdom}) *************** *** 3195,3201 **** During the calculation of fourier transforms further wisdom is generated. The fashion in which this wisdom is generated is equally controlled by ! the @dfn{fftw} function. There are five different manners in which the wisdom can be treated, these being @table @asis --- 3197,3203 ---- During the calculation of fourier transforms further wisdom is generated. The fashion in which this wisdom is generated is equally controlled by ! the @code{fftw} function. There are five different manners in which the wisdom can be treated, these being @table @asis *************** *** 3238,3247 **** Note that calculated wisdom will be lost when restarting Octave. However, the wisdom data can be reloaded if it is saved to a file as described ! above. Also, any system-wide wisdom file that has been found will ! also be used. Saved wisdom files should not be used on different ! platforms since they will not be efficient and the point of calculating ! the wisdom is lost. @seealso{fft, ifft, fft2, ifft2, fftn, ifftn} @end deftypefn fclose --- 3240,3247 ---- Note that calculated wisdom will be lost when restarting Octave. However, the wisdom data can be reloaded if it is saved to a file as described ! above. Saved wisdom files should not be used on different platforms since ! they will not be efficient and the point of calculating the wisdom is lost. @seealso{fft, ifft, fft2, ifft2, fftn, ifftn} @end deftypefn fclose *************** *** 7389,7396 **** @deftypefnx {Loadable Function} {} randn (@var{n}, @var{m}) @deftypefnx {Loadable Function} {} randn ("state", @var{x}) @deftypefnx {Loadable Function} {} randn ("seed", @var{x}) ! Return a matrix with normally distributed random elements. The ! arguments are handled the same as the arguments for @code{rand}. By default, @code{randn} uses a Marsaglia and Tsang Ziggurat technique to transform from a uniform to a normal distribution. (G. Marsaglia and --- 7389,7397 ---- @deftypefnx {Loadable Function} {} randn (@var{n}, @var{m}) @deftypefnx {Loadable Function} {} randn ("state", @var{x}) @deftypefnx {Loadable Function} {} randn ("seed", @var{x}) ! Return a matrix with normally distributed pseudo-random ! elements having zero mean and variance one. The arguments are ! handled the same as the arguments for @code{rand}. By default, @code{randn} uses a Marsaglia and Tsang Ziggurat technique to transform from a uniform to a normal distribution. (G. Marsaglia and *************** *** 9965,9971 **** typecast -*- texinfo -*- @deftypefn {Loadable Function} {} typecast (@var{x}, @var{type}) ! Converts from one datatype to another without changing the underlying data. The argument @var{type} defines the type of the return argument and must be one of 'uint8', 'uint16', 'uint32', 'uint64', 'int8', 'int16', 'int32', 'int64', 'single' or 'double'. --- 9966,9972 ---- typecast -*- texinfo -*- @deftypefn {Loadable Function} {} typecast (@var{x}, @var{type}) ! Convert from one datatype to another without changing the underlying data. The argument @var{type} defines the type of the return argument and must be one of 'uint8', 'uint16', 'uint32', 'uint64', 'int8', 'int16', 'int32', 'int64', 'single' or 'double'. diff -cNr octave-3.0.2/src/__gnuplot_raw__.cc octave-3.0.3/src/__gnuplot_raw__.cc *** octave-3.0.2/src/__gnuplot_raw__.cc 2008-08-14 13:08:57.000000000 +0200 --- octave-3.0.3/src/__gnuplot_raw__.cc 2008-09-24 09:39:36.000000000 +0200 *************** *** 5,14 **** /* A lexical scanner generated by flex */ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 5 ! #define YY_FLEX_SUBMINOR_VERSION 33 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif --- 5,33 ---- /* A lexical scanner generated by flex */ + #define yy_create_buffer gpt_create_buffer + #define yy_delete_buffer gpt_delete_buffer + #define yy_flex_debug gpt_flex_debug + #define yy_init_buffer gpt_init_buffer + #define yy_flush_buffer gpt_flush_buffer + #define yy_load_buffer_state gpt_load_buffer_state + #define yy_switch_to_buffer gpt_switch_to_buffer + #define yyin gptin + #define yyleng gptleng + #define yylex gptlex + #define yylineno gptlineno + #define yyout gptout + #define yyrestart gptrestart + #define yytext gpttext + #define yywrap gptwrap + #define yyalloc gptalloc + #define yyrealloc gptrealloc + #define yyfree gptfree + #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 5 ! #define YY_FLEX_SUBMINOR_VERSION 35 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif *************** *** 30,36 **** /* C99 systems have . Non-C99 systems may or may not. */ ! #if __STDC_VERSION__ >= 199901L /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, * if you want the limit (max/min) macros for int types. --- 49,55 ---- /* C99 systems have . Non-C99 systems may or may not. */ ! #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, * if you want the limit (max/min) macros for int types. *************** *** 93,103 **** #else /* ! __cplusplus */ ! #if __STDC__ #define YY_USE_CONST ! #endif /* __STDC__ */ #endif /* ! __cplusplus */ #ifdef YY_USE_CONST --- 112,123 ---- #else /* ! __cplusplus */ ! /* C99 requires __STDC__ to be defined as 1. */ ! #if defined (__STDC__) #define YY_USE_CONST ! #endif /* defined (__STDC__) */ #endif /* ! __cplusplus */ #ifdef YY_USE_CONST *************** *** 177,190 **** #define unput(c) yyunput( c, (yytext_ptr) ) - /* The following is because we cannot portably get our hands on size_t - * (without autoconf's help, which isn't available because we want - * flex-generated scanners to compile on their own). - */ - #ifndef YY_TYPEDEF_YY_SIZE_T #define YY_TYPEDEF_YY_SIZE_T ! typedef unsigned int yy_size_t; #endif #ifndef YY_STRUCT_YY_BUFFER_STATE --- 197,205 ---- #define unput(c) yyunput( c, (yytext_ptr) ) #ifndef YY_TYPEDEF_YY_SIZE_T #define YY_TYPEDEF_YY_SIZE_T ! typedef size_t yy_size_t; #endif #ifndef YY_STRUCT_YY_BUFFER_STATE *************** *** 345,350 **** --- 360,368 ---- typedef int yy_state_type; extern int gptlineno; + + int gptlineno = 1; + extern char *gpttext; #define yytext_ptr gpttext *************** *** 613,619 **** /* NOT is not strictly a binary operator, but is close enough for us. */ /* single quote (') transpose operator is handled separately. */ ! #line 617 "" #define INITIAL 0 --- 631,637 ---- /* NOT is not strictly a binary operator, but is close enough for us. */ /* single quote (') transpose operator is handled separately. */ ! #line 635 "" #define INITIAL 0 *************** *** 631,636 **** --- 649,683 ---- static int yy_init_globals (void ); + /* Accessor methods to globals. + These are made visible to non-reentrant scanners for convenience. */ + + int gptlex_destroy (void ); + + int gptget_debug (void ); + + void gptset_debug (int debug_flag ); + + YY_EXTRA_TYPE gptget_extra (void ); + + void gptset_extra (YY_EXTRA_TYPE user_defined ); + + FILE *gptget_in (void ); + + void gptset_in (FILE * in_str ); + + FILE *gptget_out (void ); + + void gptset_out (FILE * out_str ); + + int gptget_leng (void ); + + char *gptget_text (void ); + + int gptget_lineno (void ); + + void gptset_lineno (int line_number ); + /* Macros after this point can all be overridden by user definitions in * section 1. */ *************** *** 673,679 **** /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ ! #define ECHO (void) fwrite( gpttext, gptleng, 1, gptout ) #endif /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, --- 720,726 ---- /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ ! #define ECHO fwrite( gpttext, gptleng, 1, gptout ) #endif /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, *************** *** 684,690 **** if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ ! size_t n; \ for ( n = 0; n < max_size && \ (c = getc( gptin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ --- 731,737 ---- if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ ! int n; \ for ( n = 0; n < max_size && \ (c = getc( gptin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ *************** *** 769,775 **** #line 128 "DLD-FUNCTIONS/__gnuplot_raw__.l" ! #line 773 "" if ( !(yy_init) ) { --- 816,822 ---- #line 128 "DLD-FUNCTIONS/__gnuplot_raw__.l" ! #line 820 "" if ( !(yy_init) ) { *************** *** 1035,1041 **** #line 250 "DLD-FUNCTIONS/__gnuplot_raw__.l" ECHO; YY_BREAK ! #line 1039 "" case YY_STATE_EOF(INITIAL): yyterminate(); --- 1082,1088 ---- #line 250 "DLD-FUNCTIONS/__gnuplot_raw__.l" ECHO; YY_BREAK ! #line 1086 "" case YY_STATE_EOF(INITIAL): yyterminate(); *************** *** 1266,1272 **** /* Read in more data. */ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), ! (yy_n_chars), num_to_read ); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } --- 1313,1319 ---- /* Read in more data. */ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), ! (yy_n_chars), (size_t) num_to_read ); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } *************** *** 1290,1295 **** --- 1337,1350 ---- else ret_val = EOB_ACT_CONTINUE_SCAN; + if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { + /* Extend the array by 50%, plus the number we really need. */ + yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) gptrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); + if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); + } + (yy_n_chars) += number_to_move; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; *************** *** 1705,1711 **** (yy_buffer_stack) = (struct yy_buffer_state**)gptalloc (num_to_alloc * sizeof(struct yy_buffer_state*) ); ! memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); (yy_buffer_stack_max) = num_to_alloc; --- 1760,1768 ---- (yy_buffer_stack) = (struct yy_buffer_state**)gptalloc (num_to_alloc * sizeof(struct yy_buffer_state*) ); ! if ( ! (yy_buffer_stack) ) ! YY_FATAL_ERROR( "out of dynamic memory in gptensure_buffer_stack()" ); ! memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); (yy_buffer_stack_max) = num_to_alloc; *************** *** 1723,1728 **** --- 1780,1787 ---- ((yy_buffer_stack), num_to_alloc * sizeof(struct yy_buffer_state*) ); + if ( ! (yy_buffer_stack) ) + YY_FATAL_ERROR( "out of dynamic memory in gptensure_buffer_stack()" ); /* zero only the new slots.*/ memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); *************** *** 1767,1773 **** /** Setup the input buffer state to scan a string. The next call to gptlex() will * scan from a @e copy of @a str. ! * @param str a NUL-terminated string to scan * * @return the newly allocated buffer state object. * @note If you want to scan bytes that may contain NUL values, then use --- 1826,1832 ---- /** Setup the input buffer state to scan a string. The next call to gptlex() will * scan from a @e copy of @a str. ! * @param yystr a NUL-terminated string to scan * * @return the newly allocated buffer state object. * @note If you want to scan bytes that may contain NUL values, then use *************** *** 1845,1850 **** --- 1904,1918 ---- /* Accessor methods (get/set functions) to struct members. */ + /** Get the current line number. + * + */ + int gptget_lineno (void) + { + + return gptlineno; + } + /** Get the input stream. * */ *************** *** 1878,1883 **** --- 1946,1961 ---- return gpttext; } + /** Set the current line number. + * @param line_number + * + */ + void gptset_lineno (int line_number ) + { + + gptlineno = line_number; + } + /** Set the input stream. This does not discard the current * input buffer. * @param in_str A readable stream. diff -cNr octave-3.0.2/src/help.cc octave-3.0.3/src/help.cc *** octave-3.0.2/src/help.cc 2008-08-01 08:32:28.000000000 +0200 --- octave-3.0.3/src/help.cc 2008-09-24 09:13:49.000000000 +0200 *************** *** 1063,1068 **** --- 1063,1080 ---- if (h.length () > 0) retval = true; + else if (! symbol_found) + { + file = contents_file_in_path (nm); + + if (! file.empty ()) + { + h = get_help_from_file (file, symbol_found); + + if (h.length () > 0) + retval = true; + } + } return retval; } diff -cNr octave-3.0.2/src/load-path.cc octave-3.0.3/src/load-path.cc *** octave-3.0.2/src/load-path.cc 2008-08-01 08:50:56.000000000 +0200 --- octave-3.0.3/src/load-path.cc 2008-09-29 07:36:19.000000000 +0200 *************** *** 374,380 **** std::string tpath = load_path::command_line_path; if (tpath.empty ()) ! tpath = octave_env::getenv ("OCTAVE_LOADPATH"); std::string xpath = "."; --- 374,380 ---- std::string tpath = load_path::command_line_path; if (tpath.empty ()) ! tpath = octave_env::getenv ("OCTAVE_PATH"); std::string xpath = "."; *************** *** 382,388 **** xpath += dir_path::path_sep_str + tpath; if (! sys_path.empty ()) ! xpath += sys_path; do_set (xpath, false); } --- 382,388 ---- xpath += dir_path::path_sep_str + tpath; if (! sys_path.empty ()) ! xpath += dir_path::path_sep_str + sys_path; do_set (xpath, false); } *************** *** 789,794 **** --- 789,838 ---- } } } + + return retval; + } + + std::string + load_path::do_find_dir (const std::string& dir) const + { + std::string retval; + + if (dir.find_first_of (file_ops::dir_sep_chars) != std::string::npos + && (octave_env::absolute_pathname (dir) + || octave_env::rooted_relative_pathname (dir))) + { + file_stat fs (dir); + + if (fs.exists () && fs.is_dir ()) + return dir; + } + else + { + for (const_dir_info_list_iterator p = dir_info_list.begin (); + p != dir_info_list.end (); + p++) + { + std::string dname = p->dir_name; + + size_t dname_len = dname.length (); + + if (dname.substr (dname_len - 1) == file_ops::dir_sep_str) + dname = dname.substr (0, dname_len - 1); + + size_t dir_len = dir.length (); + + if (dname_len >= dir_len + && file_ops::is_dir_sep (dname[dname_len - dir_len - 1]) + && dir.compare (dname.substr (dname_len - dir_len)) == 0) + { + file_stat fs (p->dir_name); + + if (fs.exists () && fs.is_dir ()) + return p->dir_name; + } + } + } return retval; } diff -cNr octave-3.0.2/src/load-path.h octave-3.0.3/src/load-path.h *** octave-3.0.2/src/load-path.h 2008-08-01 08:32:28.000000000 +0200 --- octave-3.0.3/src/load-path.h 2008-09-24 09:13:49.000000000 +0200 *************** *** 116,121 **** --- 116,127 ---- ? instance->do_find_file (file) : std::string (); } + static std::string find_dir (const std::string& dir) + { + return instance_ok () + ? instance->do_find_dir (dir) : std::string (); + } + static std::string find_first_of (const string_vector& files) { return instance_ok () ? *************** *** 322,327 **** --- 328,335 ---- std::string do_find_file (const std::string& file) const; + std::string do_find_dir (const std::string& dir) const; + std::string do_find_first_of (const string_vector& files) const; string_vector do_find_all_first_of (const string_vector& files) const; diff -cNr octave-3.0.2/src/load-save.cc octave-3.0.3/src/load-save.cc *** octave-3.0.2/src/load-save.cc 2008-08-01 08:50:56.000000000 +0200 --- octave-3.0.3/src/load-save.cc 2008-09-24 09:13:49.000000000 +0200 *************** *** 1123,1135 **** return saved; } ! static int ! parse_save_options (const string_vector &argv, int argc, load_save_format &format, bool &append, ! bool &save_as_floats, bool &use_zlib, int start_arg) { ! int i; ! for (i = start_arg; i < argc; i++) { if (argv[i] == "-append") { --- 1123,1137 ---- return saved; } ! static string_vector ! parse_save_options (const string_vector &argv, load_save_format &format, bool &append, ! bool &save_as_floats, bool &use_zlib) { ! string_vector retval; ! int argc = argv.length (); ! ! for (int i = 0; i < argc; i++) { if (argv[i] == "-append") { *************** *** 1194,1224 **** } #endif else ! break; } ! return i; } ! static int parse_save_options (const std::string &arg, load_save_format &format, bool &append, bool &save_as_floats, ! bool &use_zlib, int start_arg) { std::istringstream is (arg); std::string str; - int argc = 0; string_vector argv; while (! is.eof ()) { is >> str; argv.append (str); - argc++; } ! return parse_save_options (argv, argc, format, append, save_as_floats, ! use_zlib, start_arg); } void --- 1196,1224 ---- } #endif else ! retval.append (argv[i]); } ! return retval; } ! static string_vector parse_save_options (const std::string &arg, load_save_format &format, bool &append, bool &save_as_floats, ! bool &use_zlib) { std::istringstream is (arg); std::string str; string_vector argv; while (! is.eof ()) { is >> str; argv.append (str); } ! return parse_save_options (argv, format, append, save_as_floats, ! use_zlib); } void *************** *** 1397,1403 **** bool use_zlib = false; parse_save_options (Voctave_core_file_options, format, append, ! save_as_floats, use_zlib, 0); std::ios::openmode mode = std::ios::out; --- 1397,1403 ---- bool use_zlib = false; parse_save_options (Voctave_core_file_options, format, append, ! save_as_floats, use_zlib); std::ios::openmode mode = std::ios::out; *************** *** 1590,1598 **** { octave_value_list retval; ! int argc = args.length () + 1; ! string_vector argv = args.make_argv ("save"); if (error_state) return retval; --- 1590,1598 ---- { octave_value_list retval; ! int argc = args.length (); ! string_vector argv = args.make_argv (); if (error_state) return retval; *************** *** 1608,1626 **** bool use_zlib = false; ! load_save_format user_file_format = LS_UNKNOWN; ! bool dummy; ! ! // Get user file format ! parse_save_options (argv, argc, user_file_format, dummy, ! dummy, dummy, 1); ! ! if (user_file_format == LS_UNKNOWN) ! parse_save_options (Vdefault_save_options, format, append, save_as_floats, ! use_zlib, 0); ! ! int i = parse_save_options (argv, argc, format, append, save_as_floats, ! use_zlib, 1); if (error_state) return retval; --- 1608,1622 ---- bool use_zlib = false; ! // get default options ! parse_save_options (Vdefault_save_options, format, append, save_as_floats, ! use_zlib); ! ! // override from command line ! argv = parse_save_options (argv, format, append, save_as_floats, ! use_zlib); ! argc = argv.length (); ! int i = 0; if (error_state) return retval; diff -cNr octave-3.0.2/src/ls-oct-ascii.cc octave-3.0.3/src/ls-oct-ascii.cc *** octave-3.0.2/src/ls-oct-ascii.cc 2008-08-01 08:32:28.000000000 +0200 --- octave-3.0.3/src/ls-oct-ascii.cc 2008-09-24 09:13:49.000000000 +0200 *************** *** 108,117 **** while (is.get (c) && (c == ' ' || c == '\t' || c == ':')) ; // Skip whitespace and the colon. ! if (c != '\n') { value << c; ! while (is.get (c) && c != '\n') value << c; } --- 108,117 ---- while (is.get (c) && (c == ' ' || c == '\t' || c == ':')) ; // Skip whitespace and the colon. ! if (c != '\n' && c != '\r') { value << c; ! while (is.get (c) && c != '\n' && c != '\r') value << c; } *************** *** 122,128 **** break; else { ! while (is.get (c) && c != '\n') ; // Skip to end of line. } } --- 122,128 ---- break; else { ! while (is.get (c) && c != '\n' && c != '\r') ; // Skip to end of line. } } diff -cNr octave-3.0.2/src/ls-oct-ascii.h octave-3.0.3/src/ls-oct-ascii.h *** octave-3.0.2/src/ls-oct-ascii.h 2008-08-01 08:32:28.000000000 +0200 --- octave-3.0.3/src/ls-oct-ascii.h 2008-09-24 09:13:49.000000000 +0200 *************** *** 99,109 **** ; // Skip whitespace and the colon. is.putback (c); ! if (c != '\n') is >> value; if (is) status = true; ! while (is.get (c) && c != '\n') ; // Skip to beginning of next line; break; } --- 99,109 ---- ; // Skip whitespace and the colon. is.putback (c); ! if (c != '\n' && c != '\r') is >> value; if (is) status = true; ! while (is.get (c) && c != '\n' && c != '\r') ; // Skip to beginning of next line; break; } *************** *** 161,171 **** ; // Skip whitespace and the colon. is.putback (c); ! if (c != '\n') is >> value; if (is) status = true; ! while (is.get (c) && c != '\n') ; // Skip to beginning of next line; return status; } --- 161,171 ---- ; // Skip whitespace and the colon. is.putback (c); ! if (c != '\n' && c != '\r') is >> value; if (is) status = true; ! while (is.get (c) && c != '\n' && c != '\r') ; // Skip to beginning of next line; return status; } diff -cNr octave-3.0.2/src/octave.cc octave-3.0.3/src/octave.cc *** octave-3.0.2/src/octave.cc 2008-08-01 08:32:28.000000000 +0200 --- octave-3.0.3/src/octave.cc 2008-09-24 09:13:49.000000000 +0200 *************** *** 750,755 **** --- 750,760 ---- initialize_version_info (); + // Make all command-line arguments available to startup files, + // including PKG_ADD files. + + intern_argv (argc, argv); + load_path::initialize (set_initial_path); execute_startup_files (); *************** *** 778,787 **** if (! code_to_eval.empty ()) { - // We probably want all the args for an --eval option. - - intern_argv (argc, argv); - int parse_status = execute_eval_option_code (code_to_eval); if (! (persist || remaining_args > 0)) --- 783,788 ---- diff -cNr octave-3.0.2/src/oct-obj.cc octave-3.0.3/src/oct-obj.cc *** octave-3.0.2/src/oct-obj.cc 2008-08-01 08:32:28.000000000 +0200 --- octave-3.0.3/src/oct-obj.cc 2008-09-24 09:13:49.000000000 +0200 *************** *** 206,216 **** total_nr += n ? n : 1; } ! argv.resize (total_nr+1); - argv[0] = fcn_name; - - octave_idx_type k = 1; for (octave_idx_type i = 0; i < len; i++) { octave_idx_type nr = elem(i).rows (); --- 206,221 ---- total_nr += n ? n : 1; } ! octave_idx_type k = 0; ! if (! fcn_name.empty ()) ! { ! argv.resize (total_nr+1); ! argv[0] = fcn_name; ! k = 1; ! } ! else ! argv.resize (total_nr); for (octave_idx_type i = 0; i < len; i++) { octave_idx_type nr = elem(i).rows (); diff -cNr octave-3.0.2/src/oct-obj.h octave-3.0.3/src/oct-obj.h *** octave-3.0.2/src/oct-obj.h 2008-08-01 08:32:28.000000000 +0200 --- octave-3.0.3/src/oct-obj.h 2008-09-24 09:13:49.000000000 +0200 *************** *** 115,121 **** bool has_magic_colon (void) const; ! string_vector make_argv (const std::string&) const; void stash_name_tags (const string_vector& nm) { names = nm; } --- 115,121 ---- bool has_magic_colon (void) const; ! string_vector make_argv (const std::string& = std::string()) const; void stash_name_tags (const string_vector& nm) { names = nm; } diff -cNr octave-3.0.2/src/parse.y octave-3.0.3/src/parse.y *** octave-3.0.2/src/parse.y 2008-08-01 08:50:56.000000000 +0200 --- octave-3.0.3/src/parse.y 2008-09-24 09:13:49.000000000 +0200 *************** *** 4017,4025 **** octave_value_list tmp = eval_string (args(0), nargout > 0, parse_status, nargout); - if (nargout > 0) - retval = tmp; - if (nargin > 1 && (parse_status != 0 || error_state)) { error_state = 0; --- 4017,4022 ---- *************** *** 4029,4038 **** buffer_error_messages--; ! eval_string (args(1), 0, parse_status, nargout); ! retval = octave_value_list (); } unwind_protect::run_frame ("Feval"); } --- 4026,4038 ---- buffer_error_messages--; ! tmp = eval_string (args(1), nargout > 0, parse_status, nargout); ! if (nargout > 0) ! retval = tmp; } + else if (nargout > 0) + retval = tmp; unwind_protect::run_frame ("Feval"); } diff -cNr octave-3.0.2/src/pt-assign.cc octave-3.0.3/src/pt-assign.cc *** octave-3.0.2/src/pt-assign.cc 2008-08-01 08:32:28.000000000 +0200 --- octave-3.0.3/src/pt-assign.cc 2008-09-24 09:13:49.000000000 +0200 *************** *** 44,49 **** --- 44,52 ---- // Simple assignment expressions. + // FIXME -- the following variable and the function that uses it + // should be removed from some future version of Octave. + static const char *former_built_in_variables[] = { "DEFAULT_EXEC_PATH", *************** *** 157,167 **** tree_simple_assignment::tree_simple_assignment (tree_expression *le, tree_expression *re, bool plhs, int l, int c, octave_value::assign_op t) ! : tree_expression (l, c), lhs (le), rhs (re), preserve (plhs), etype (t) ! { ! if (lhs) ! maybe_warn_former_built_in_variable (lhs->name ()); ! } tree_simple_assignment::~tree_simple_assignment (void) { --- 160,167 ---- tree_simple_assignment::tree_simple_assignment (tree_expression *le, tree_expression *re, bool plhs, int l, int c, octave_value::assign_op t) ! : tree_expression (l, c), lhs (le), rhs (re), preserve (plhs), etype (t), ! first_execution (true) { } tree_simple_assignment::~tree_simple_assignment (void) { *************** *** 194,199 **** --- 194,202 ---- { octave_value retval; + if (first_execution && lhs) + maybe_warn_former_built_in_variable (lhs->name ()); + if (error_state) return retval; *************** *** 258,263 **** --- 261,268 ---- eval_error (); } + first_execution = false; + return retval; } *************** *** 302,317 **** tree_multi_assignment::tree_multi_assignment (tree_argument_list *lst, tree_expression *r, bool plhs, int l, int c, octave_value::assign_op t) ! : tree_expression (l, c), lhs (lst), rhs (r), preserve (plhs), etype (t) ! { ! for (tree_argument_list::iterator p = lhs->begin (); p != lhs->end (); p++) ! { ! tree_expression *lhs_expr = *p; ! ! if (lhs_expr) ! maybe_warn_former_built_in_variable (lhs_expr->name ()); ! } ! } tree_multi_assignment::~tree_multi_assignment (void) { --- 307,314 ---- tree_multi_assignment::tree_multi_assignment (tree_argument_list *lst, tree_expression *r, bool plhs, int l, int c, octave_value::assign_op t) ! : tree_expression (l, c), lhs (lst), rhs (r), preserve (plhs), etype (t), ! first_execution (true) { } tree_multi_assignment::~tree_multi_assignment (void) { *************** *** 345,350 **** --- 342,358 ---- if (error_state) return retval; + if (first_execution) + { + for (tree_argument_list::iterator p = lhs->begin (); p != lhs->end (); p++) + { + tree_expression *lhs_expr = *p; + + if (lhs_expr) + maybe_warn_former_built_in_variable (lhs_expr->name ()); + } + } + if (rhs) { std::list lvalue_list = lhs->lvalue_list (); *************** *** 486,491 **** --- 494,501 ---- else eval_error (); + first_execution = false; + return retval; } diff -cNr octave-3.0.2/src/pt-assign.h octave-3.0.3/src/pt-assign.h *** octave-3.0.2/src/pt-assign.h 2008-08-01 08:32:28.000000000 +0200 --- octave-3.0.3/src/pt-assign.h 2008-09-24 09:13:49.000000000 +0200 *************** *** 46,52 **** tree_simple_assignment (bool plhs = false, int l = -1, int c = -1, octave_value::assign_op t = octave_value::op_asn_eq) ! : tree_expression (l, c), lhs (0), rhs (0), preserve (plhs), etype (t) { } tree_simple_assignment (tree_expression *le, tree_expression *re, bool plhs = false, int l = -1, int c = -1, --- 46,53 ---- tree_simple_assignment (bool plhs = false, int l = -1, int c = -1, octave_value::assign_op t = octave_value::op_asn_eq) ! : tree_expression (l, c), lhs (0), rhs (0), preserve (plhs), etype (t), ! first_execution (true) { } tree_simple_assignment (tree_expression *le, tree_expression *re, bool plhs = false, int l = -1, int c = -1, *************** *** 100,105 **** --- 101,109 ---- // The type of the expression. octave_value::assign_op etype; + // true only on first rvalue() call. + bool first_execution; + // No copying! tree_simple_assignment (const tree_simple_assignment&); *************** *** 116,122 **** tree_multi_assignment (bool plhs = false, int l = -1, int c = -1, octave_value::assign_op t = octave_value::op_asn_eq) ! : tree_expression (l, c), lhs (0), rhs (0), preserve (plhs), etype(t) { } tree_multi_assignment (tree_argument_list *lst, tree_expression *r, bool plhs = false, int l = -1, int c = -1, --- 120,127 ---- tree_multi_assignment (bool plhs = false, int l = -1, int c = -1, octave_value::assign_op t = octave_value::op_asn_eq) ! : tree_expression (l, c), lhs (0), rhs (0), preserve (plhs), etype(t), ! first_execution (true) { } tree_multi_assignment (tree_argument_list *lst, tree_expression *r, bool plhs = false, int l = -1, int c = -1, *************** *** 162,167 **** --- 167,175 ---- // The type of the expression. octave_value::assign_op etype; + // true only on first rvalue() call. + bool first_execution; + // No copying! tree_multi_assignment (const tree_multi_assignment&); diff -cNr octave-3.0.2/src/pt-mat.cc octave-3.0.3/src/pt-mat.cc *** octave-3.0.2/src/pt-mat.cc 2008-08-01 08:32:28.000000000 +0200 --- octave-3.0.3/src/pt-mat.cc 2008-09-24 09:13:49.000000000 +0200 *************** *** 184,190 **** tm_row_const_rep *rep; }; ! static std::string get_concat_class (const std::string& c1, const std::string& c2) { std::string retval = octave_base_value::static_class_name (); --- 184,190 ---- tm_row_const_rep *rep; }; ! std::string get_concat_class (const std::string& c1, const std::string& c2) { std::string retval = octave_base_value::static_class_name (); *************** *** 699,705 **** return retval; } ! static void maybe_warn_string_concat (bool all_dq_strings_p, bool all_sq_strings_p) { if (! (all_dq_strings_p || all_sq_strings_p)) --- 699,705 ---- return retval; } ! void maybe_warn_string_concat (bool all_dq_strings_p, bool all_sq_strings_p) { if (! (all_dq_strings_p || all_sq_strings_p)) diff -cNr octave-3.0.2/src/pt-mat.h octave-3.0.3/src/pt-mat.h *** octave-3.0.2/src/pt-mat.h 2008-08-01 08:32:28.000000000 +0200 --- octave-3.0.3/src/pt-mat.h 2008-09-24 09:13:49.000000000 +0200 *************** *** 79,84 **** --- 79,90 ---- // The character to fill with when creating string arrays. extern char Vstring_fill_char; + extern std::string + get_concat_class (const std::string& c1, const std::string& c2); + + extern void + maybe_warn_string_concat (bool all_dq_strings_p, bool all_sq_strings_p); + #endif /* diff -cNr octave-3.0.2/src/utils.cc octave-3.0.3/src/utils.cc *** octave-3.0.2/src/utils.cc 2008-08-01 08:32:28.000000000 +0200 --- octave-3.0.3/src/utils.cc 2008-09-24 09:13:49.000000000 +0200 *************** *** 754,759 **** --- 754,781 ---- return retval; } + // See if there is a directory called "name" in the path and if it + // contains a Contents.m file return the full path to this file. + + std::string + contents_file_in_path (const std::string& dir) + { + std::string retval; + + if (dir.length () > 0) + { + std::string tcontents = file_ops::concat (load_path::find_dir (dir), + std::string ("Contents.m")); + + file_stat fs (tcontents); + + if (fs.exists ()) + retval = octave_env::make_absolute (tcontents, octave_env::getcwd ()); + } + + return retval; + } + DEFUN (errno_list, args, , "-*- texinfo -*-\n\ @deftypefn {Built-in Function} {} errno_list ()\n\ diff -cNr octave-3.0.2/src/utils.h octave-3.0.3/src/utils.h *** octave-3.0.2/src/utils.h 2008-08-01 08:32:28.000000000 +0200 --- octave-3.0.3/src/utils.h 2008-09-24 09:13:49.000000000 +0200 *************** *** 64,69 **** --- 64,71 ---- extern OCTINTERP_API std::string file_in_path (const std::string&, const std::string&); + extern OCTINTERP_API std::string contents_file_in_path (const std::string&); + extern OCTINTERP_API std::string fcn_file_in_path (const std::string&); extern OCTINTERP_API std::string oct_file_in_path (const std::string&); extern OCTINTERP_API std::string mex_file_in_path (const std::string&); diff -cNr octave-3.0.2/src/variables.cc octave-3.0.3/src/variables.cc *** octave-3.0.2/src/variables.cc 2008-08-01 08:50:56.000000000 +0200 --- octave-3.0.3/src/variables.cc 2008-09-29 07:36:19.000000000 +0200 *************** *** 58,63 **** --- 58,64 ---- #include "unwind-prot.h" #include "utils.h" #include "variables.h" + #include "debug.h" // Should Octave always check to see if function files have changed // since they were last compiled? *************** *** 1091,1096 **** --- 1092,1102 ---- else retval = true; } + + // If the function has been replaced then clear any + // breakpoints associated with it + if (retval) + bp_table::remove_all_breakpoints_in_file (nm, true); } } } diff -cNr octave-3.0.2/src/version.h octave-3.0.3/src/version.h *** octave-3.0.2/src/version.h 2008-08-20 07:28:21.000000000 +0200 --- octave-3.0.3/src/version.h 2008-09-29 08:03:11.000000000 +0200 *************** *** 24,34 **** #if !defined (octave_version_h) #define octave_version_h 1 ! #define OCTAVE_VERSION "3.0.2" #define OCTAVE_API_VERSION "api-v32" ! #define OCTAVE_RELEASE_DATE "2008-08-14" #define OCTAVE_COPYRIGHT "Copyright (C) 2008 John W. Eaton and others." --- 24,34 ---- #if !defined (octave_version_h) #define octave_version_h 1 ! #define OCTAVE_VERSION "3.0.3" #define OCTAVE_API_VERSION "api-v32" ! #define OCTAVE_RELEASE_DATE "2008-09-24" #define OCTAVE_COPYRIGHT "Copyright (C) 2008 John W. Eaton and others." diff -cNr octave-3.0.2/test/ChangeLog octave-3.0.3/test/ChangeLog *** octave-3.0.2/test/ChangeLog 2008-08-20 07:28:21.000000000 +0200 --- octave-3.0.3/test/ChangeLog 2008-09-29 08:03:11.000000000 +0200 *************** *** 1,3 **** --- 1,11 ---- + 2008-09-24 Jaroslav Hajek + + Version 3.0.3 released. + + 2008-09-18 Jaroslav Hajek + + * test_null_assign.m: New tests. + 2008-08-19 Jaroslav Hajek Version 3.0.2 released. diff -cNr octave-3.0.2/test/test_null_assign.m octave-3.0.3/test/test_null_assign.m *** octave-3.0.2/test/test_null_assign.m 1970-01-01 01:00:00.000000000 +0100 --- octave-3.0.3/test/test_null_assign.m 2008-09-24 09:13:50.000000000 +0200 *************** *** 0 **** --- 1,35 ---- + ## Copyright (C) 2008 Jaroslav Hajek + ## + ## This file is part of Octave. + ## + ## Octave is free software; you can redistribute it and/or modify it + ## under the terms of the GNU General Public License as published by + ## the Free Software Foundation; either version 3 of the License, or (at + ## your option) any later version. + ## + ## Octave is distributed in the hope that it will be useful, but + ## WITHOUT ANY WARRANTY; without even the implied warranty of + ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + ## General Public License for more details. + ## + ## You should have received a copy of the GNU General Public License + ## along with Octave; see the file COPYING. If not, see + ## . + + %!test + %! a = 1:3; a(:) = []; assert (size (a), [0, 0]) + %!test + %! a = 1:3; a(1:3) = []; assert (size (a), [1, 0]) + %!test + %! a = (1:3).'; a(1:3) = []; assert (size (a), [0, 1]) + %!test + %! a = ones (3); a(:,:) = []; assert (size (a), [0, 3]) + %!test + %! a = ones (3); a(1:3,:) = []; assert (size (a), [0, 3]) + %!test + %! a = ones (3); a(:,1:3) = []; assert (size (a), [3, 0]) + %!test + %! a = ones (3); fail ("a(1:2,1:2) = []", ".*"); + %!test + %! a = ones (3); fail ("a(1:3,1:3) = []", ".*"); + PATCH_EOF