changeset 19067:c8240a60dd01

Add penny.mat to build system. * examples/data/penny.mat: New example data file. * examples/data/Makefile.am: Automake file for new directory of example data files. * examples/Makefile.am: Change to be just a pass-through to the subdirectories code/ and data/. * examples/@FIRfilter/FIRfilter.m, examples/@FIRfilter/FIRfilter_aggregation.m, examples/@FIRfilter/display.m, examples/@FIRfilter/module.mk, examples/@FIRfilter/subsasgn.m, examples/@FIRfilter/subsref.m, examples/@polynomial/display.m, examples/@polynomial/double.m, examples/@polynomial/end.m, examples/@polynomial/get.m, examples/@polynomial/module.mk, examples/@polynomial/mtimes.m, examples/@polynomial/numel.m, examples/@polynomial/plot.m, examples/@polynomial/polynomial.m, examples/@polynomial/polynomial_superiorto.m, examples/@polynomial/polyval.m, examples/@polynomial/roots.m, examples/@polynomial/set.m, examples/@polynomial/subsasgn.m, examples/@polynomial/subsref.m, examples/COPYING, examples/addtwomatrices.cc, examples/celldemo.cc, examples/embedded.cc, examples/fortrandemo.cc, examples/fortransub.f, examples/funcdemo.cc, examples/globaldemo.cc, examples/helloworld.cc, examples/make_int.cc, examples/mex_demo.c, examples/mycell.c, examples/myfeval.c, examples/myfevalf.f, examples/myfunc.c, examples/myhello.c, examples/mypow2.c, examples/myprop.c, examples/myset.c, examples/mysparse.c, examples/mystring.c, examples/mystruct.c, examples/oct_demo.cc, examples/oregonator.cc, examples/oregonator.m, examples/paramdemo.cc, examples/standalone.cc, examples/standalonebuiltin.cc, examples/stringdemo.cc, examples/structdemo.cc, examples/unwinddemo.cc: Move current example files to examples/code/ directory. * configure.ac: Add Makefiles in examples/code and examples/data directories. * build-aux/common.mk: Define octdatadir variable. * doc/interpreter/Makefile.am: Change location of External Code Interface examples to examples/code directory. * doc/interpreter/munge-texi.pl: Expand EXAMPLEFILE macro to examples/code directory.
author Rik <rik@octave.org>
date Tue, 19 Aug 2014 14:32:44 -0700
parents d902542221c8
children f707835af867
files build-aux/common.mk configure.ac doc/interpreter/Makefile.am doc/interpreter/munge-texi.pl examples/@FIRfilter/FIRfilter.m examples/@FIRfilter/FIRfilter_aggregation.m examples/@FIRfilter/display.m examples/@FIRfilter/module.mk examples/@FIRfilter/subsasgn.m examples/@FIRfilter/subsref.m examples/@polynomial/display.m examples/@polynomial/double.m examples/@polynomial/end.m examples/@polynomial/get.m examples/@polynomial/module.mk examples/@polynomial/mtimes.m examples/@polynomial/numel.m examples/@polynomial/plot.m examples/@polynomial/polynomial.m examples/@polynomial/polynomial_superiorto.m examples/@polynomial/polyval.m examples/@polynomial/roots.m examples/@polynomial/set.m examples/@polynomial/subsasgn.m examples/@polynomial/subsref.m examples/COPYING examples/Makefile.am examples/addtwomatrices.cc examples/celldemo.cc examples/code/@FIRfilter/FIRfilter.m examples/code/@FIRfilter/FIRfilter_aggregation.m examples/code/@FIRfilter/display.m examples/code/@FIRfilter/module.mk examples/code/@FIRfilter/subsasgn.m examples/code/@FIRfilter/subsref.m examples/code/@polynomial/display.m examples/code/@polynomial/double.m examples/code/@polynomial/end.m examples/code/@polynomial/get.m examples/code/@polynomial/module.mk examples/code/@polynomial/mtimes.m examples/code/@polynomial/numel.m examples/code/@polynomial/plot.m examples/code/@polynomial/polynomial.m examples/code/@polynomial/polynomial_superiorto.m examples/code/@polynomial/polyval.m examples/code/@polynomial/roots.m examples/code/@polynomial/set.m examples/code/@polynomial/subsasgn.m examples/code/@polynomial/subsref.m examples/code/COPYING examples/code/Makefile.am examples/code/addtwomatrices.cc examples/code/celldemo.cc examples/code/embedded.cc examples/code/fortrandemo.cc examples/code/fortransub.f examples/code/funcdemo.cc examples/code/globaldemo.cc examples/code/helloworld.cc examples/code/make_int.cc examples/code/mex_demo.c examples/code/mycell.c examples/code/myfeval.c examples/code/myfevalf.f examples/code/myfunc.c examples/code/myhello.c examples/code/mypow2.c examples/code/myprop.c examples/code/myset.c examples/code/mysparse.c examples/code/mystring.c examples/code/mystruct.c examples/code/oct_demo.cc examples/code/oregonator.cc examples/code/oregonator.m examples/code/paramdemo.cc examples/code/standalone.cc examples/code/standalonebuiltin.cc examples/code/stringdemo.cc examples/code/structdemo.cc examples/code/unwinddemo.cc examples/data/Makefile.am examples/data/penny.mat examples/embedded.cc examples/fortrandemo.cc examples/fortransub.f examples/funcdemo.cc examples/globaldemo.cc examples/helloworld.cc examples/make_int.cc examples/mex_demo.c examples/mycell.c examples/myfeval.c examples/myfevalf.f examples/myfunc.c examples/myhello.c examples/mypow2.c examples/myprop.c examples/myset.c examples/mysparse.c examples/mystring.c examples/mystruct.c examples/oct_demo.cc examples/oregonator.cc examples/oregonator.m examples/paramdemo.cc examples/standalone.cc examples/standalonebuiltin.cc examples/stringdemo.cc examples/structdemo.cc examples/unwinddemo.cc
diffstat 112 files changed, 1896 insertions(+), 1698 deletions(-) [+]
line wrap: on
line diff
--- a/build-aux/common.mk	Tue Aug 19 05:41:06 2014 -0400
+++ b/build-aux/common.mk	Tue Aug 19 14:32:44 2014 -0700
@@ -445,6 +445,9 @@
 localapioctfiledir = @localapioctfiledir@
 localveroctfiledir = @localveroctfiledir@
 
+# Where Octave will search for example data files shipped with distribution.
+octdatadir = @octdatadir@
+
 # Where Octave will search to find image files.
 imagedir = @imagedir@
 
--- a/configure.ac	Tue Aug 19 05:41:06 2014 -0400
+++ b/configure.ac	Tue Aug 19 14:32:44 2014 -0700
@@ -2882,6 +2882,8 @@
   doc/refcard/Makefile
   etc/icons/Makefile
   examples/Makefile
+  examples/code/Makefile
+  examples/data/Makefile
   libgnu/Makefile
   libgui/Makefile
   libinterp/Makefile
--- a/doc/interpreter/Makefile.am	Tue Aug 19 05:41:06 2014 -0400
+++ b/doc/interpreter/Makefile.am	Tue Aug 19 14:32:44 2014 -0700
@@ -40,43 +40,43 @@
 ## They are dependencies for the documentation.
 ## They must not be distributed from this directory.
 EXAMPLE_FILES = \
-  $(top_srcdir)/examples/@FIRfilter/FIRfilter.m \
-  $(top_srcdir)/examples/@FIRfilter/FIRfilter_aggregation.m \
-  $(top_srcdir)/examples/@FIRfilter/display.m \
-  $(top_srcdir)/examples/@FIRfilter/subsasgn.m \
-  $(top_srcdir)/examples/@FIRfilter/subsref.m \
-  $(top_srcdir)/examples/@polynomial/display.m \
-  $(top_srcdir)/examples/@polynomial/double.m \
-  $(top_srcdir)/examples/@polynomial/end.m \
-  $(top_srcdir)/examples/@polynomial/get.m \
-  $(top_srcdir)/examples/@polynomial/mtimes.m \
-  $(top_srcdir)/examples/@polynomial/plot.m \
-  $(top_srcdir)/examples/@polynomial/polynomial.m \
-  $(top_srcdir)/examples/@polynomial/polynomial_superiorto.m \
-  $(top_srcdir)/examples/@polynomial/polyval.m \
-  $(top_srcdir)/examples/@polynomial/set.m \
-  $(top_srcdir)/examples/@polynomial/subsref.m \
-  $(top_srcdir)/examples/addtwomatrices.cc \
-  $(top_srcdir)/examples/celldemo.cc \
-  $(top_srcdir)/examples/embedded.cc \
-  $(top_srcdir)/examples/fortrandemo.cc \
-  $(top_srcdir)/examples/fortransub.f \
-  $(top_srcdir)/examples/funcdemo.cc \
-  $(top_srcdir)/examples/globaldemo.cc \
-  $(top_srcdir)/examples/helloworld.cc \
-  $(top_srcdir)/examples/mycell.c \
-  $(top_srcdir)/examples/myfeval.c \
-  $(top_srcdir)/examples/myfunc.c \
-  $(top_srcdir)/examples/myhello.c \
-  $(top_srcdir)/examples/mypow2.c \
-  $(top_srcdir)/examples/mysparse.c \
-  $(top_srcdir)/examples/mystring.c \
-  $(top_srcdir)/examples/mystruct.c \
-  $(top_srcdir)/examples/paramdemo.cc \
-  $(top_srcdir)/examples/standalone.cc \
-  $(top_srcdir)/examples/stringdemo.cc \
-  $(top_srcdir)/examples/structdemo.cc \
-  $(top_srcdir)/examples/unwinddemo.cc
+  $(top_srcdir)/examples/code/@FIRfilter/FIRfilter.m \
+  $(top_srcdir)/examples/code/@FIRfilter/FIRfilter_aggregation.m \
+  $(top_srcdir)/examples/code/@FIRfilter/display.m \
+  $(top_srcdir)/examples/code/@FIRfilter/subsasgn.m \
+  $(top_srcdir)/examples/code/@FIRfilter/subsref.m \
+  $(top_srcdir)/examples/code/@polynomial/display.m \
+  $(top_srcdir)/examples/code/@polynomial/double.m \
+  $(top_srcdir)/examples/code/@polynomial/end.m \
+  $(top_srcdir)/examples/code/@polynomial/get.m \
+  $(top_srcdir)/examples/code/@polynomial/mtimes.m \
+  $(top_srcdir)/examples/code/@polynomial/plot.m \
+  $(top_srcdir)/examples/code/@polynomial/polynomial.m \
+  $(top_srcdir)/examples/code/@polynomial/polynomial_superiorto.m \
+  $(top_srcdir)/examples/code/@polynomial/polyval.m \
+  $(top_srcdir)/examples/code/@polynomial/set.m \
+  $(top_srcdir)/examples/code/@polynomial/subsref.m \
+  $(top_srcdir)/examples/code/addtwomatrices.cc \
+  $(top_srcdir)/examples/code/celldemo.cc \
+  $(top_srcdir)/examples/code/embedded.cc \
+  $(top_srcdir)/examples/code/fortrandemo.cc \
+  $(top_srcdir)/examples/code/fortransub.f \
+  $(top_srcdir)/examples/code/funcdemo.cc \
+  $(top_srcdir)/examples/code/globaldemo.cc \
+  $(top_srcdir)/examples/code/helloworld.cc \
+  $(top_srcdir)/examples/code/mycell.c \
+  $(top_srcdir)/examples/code/myfeval.c \
+  $(top_srcdir)/examples/code/myfunc.c \
+  $(top_srcdir)/examples/code/myhello.c \
+  $(top_srcdir)/examples/code/mypow2.c \
+  $(top_srcdir)/examples/code/mysparse.c \
+  $(top_srcdir)/examples/code/mystring.c \
+  $(top_srcdir)/examples/code/mystruct.c \
+  $(top_srcdir)/examples/code/paramdemo.cc \
+  $(top_srcdir)/examples/code/standalone.cc \
+  $(top_srcdir)/examples/code/stringdemo.cc \
+  $(top_srcdir)/examples/code/structdemo.cc \
+  $(top_srcdir)/examples/code/unwinddemo.cc
 
 
 include images.mk
--- a/doc/interpreter/munge-texi.pl	Tue Aug 19 05:41:06 2014 -0400
+++ b/doc/interpreter/munge-texi.pl	Tue Aug 19 14:32:44 2014 -0700
@@ -68,7 +68,7 @@
   }
   if (/^\s*\@EXAMPLEFILE\((\S+)\)/)
   {
-    $fname = "$top_srcdir/examples/$1";
+    $fname = "$top_srcdir/examples/code/$1";
     print '@verbatim',"\n";
     open (EXAMPFH, $fname) or die "unable to open example file $fname\n";
     while (<EXAMPFH>) 
--- a/examples/@FIRfilter/FIRfilter.m	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-## -*- texinfo -*-
-## @deftypefn  {Function File} {} FIRfilter ()
-## @deftypefnx {Function File} {} FIRfilter (@var{p})
-## Create a FIR filter with polynomial @var{p} as coefficient vector.
-## @end deftypefn
-
-function f = FIRfilter (p)
-
-  f.polynomial = [];
-  if (nargin == 0)
-    p = @polynomial ([1]);
-  elseif (nargin == 1)
-    if (!isa (p, "polynomial"))
-      error ("FIRfilter: expecting polynomial as input argument");
-    endif
-  else
-    print_usage ();
-  endif
-  f = class (f, "FIRfilter", p);
-endfunction
--- a/examples/@FIRfilter/FIRfilter_aggregation.m	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,21 +0,0 @@
-## -*- texinfo -*-
-## @deftypefn  {Function File} {} FIRfilter ()
-## @deftypefnx {Function File} {} FIRfilter (@var{p})
-## Create a FIR filter with polynomial @var{p} as coefficient vector.
-## @end deftypefn
-
-function f = FIRfilter (p)
-
-  if (nargin == 0)
-    f.polynomial = @polynomial ([1]);
-  elseif (nargin == 1)
-    if (isa (p, "polynomial"))
-      f.polynomial = p;
-    else
-      error ("FIRfilter: expecting polynomial as input argument");
-    endif
-  else
-    print_usage ();
-  endif
-  f = class (f, "FIRfilter");
-endfunction
--- a/examples/@FIRfilter/display.m	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-function display (f)
-
-  display (f.polynomial);
-
-endfunction
-
--- a/examples/@FIRfilter/module.mk	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-FCN_FILE_DIRS += @FIRfilter
-
-EXTRA_DIST += @FIRfilter/module.mk
-
-at_FIRfilter_FCN_FILES = \
-  @FIRfilter/display.m \
-  @FIRfilter/FIRfilter_aggregation.m \
-  @FIRfilter/FIRfilter.m \
-  @FIRfilter/subsasgn.m \
-  @FIRfilter/subsref.m
-
-FCN_FILES += $(at_FIRfilter_FCN_FILES)
--- a/examples/@FIRfilter/subsasgn.m	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-function out = subsasgn (f, index, val)
-  switch (index.type)
-    case "."
-      fld = index.subs;
-      if (strcmp (fld, "polynomial"))
-        out = f;
-        out.polynomial = val;
-      else
-        error ("@FIRfilter/subsref: invalid property \"%s\"", fld);
-      endif
-    otherwise
-      error ("FIRfilter/subsagn: Invalid index type")
-  endswitch
-endfunction
--- a/examples/@FIRfilter/subsref.m	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-function out = subsref (f, x)
-  switch (x.type)
-    case "()"
-      n = f.polynomial;
-      out = filter (n.poly, 1, x.subs{1});
-    case "."
-      fld = x.subs;
-      if (strcmp (fld, "polynomial"))
-        out = f.polynomial;
-      else
-        error ("@FIRfilter/subsref: invalid property \"%s\"", fld);
-      endif
-    otherwise
-      error ("@FIRfilter/subsref: invalid subscript type for FIR filter");
-  endswitch
-endfunction
--- a/examples/@polynomial/display.m	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-function display (p)
-  a = p.poly;
-  first = true;
-  fprintf ("%s =", inputname (1));
-  for i = 1 : length (a);
-    if (a(i) != 0)
-      if (first)
-        first = false;
-      elseif (a(i) > 0)
-        fprintf (" +");
-      endif
-      if (a(i) < 0)
-        fprintf (" -");
-      endif
-      if (i == 1)
-        fprintf (" %g", abs (a(i)));
-      elseif (abs(a(i)) != 1)
-        fprintf (" %g *", abs (a(i)));
-      endif
-      if (i > 1)
-        fprintf (" X");
-      endif
-      if (i > 2)
-        fprintf (" ^ %d", i - 1);
-      endif
-    endif
-  endfor
-  if (first)
-    fprintf (" 0");
-  endif
-  fprintf ("\n");
-endfunction
--- a/examples/@polynomial/double.m	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-function b = double (a)
-  b = a.poly;
-endfunction
--- a/examples/@polynomial/end.m	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-function r = end (obj, index_pos, num_indices)
-
-  if (num_indices != 1)
-    error ("polynomial object may only have one index")
-  endif
-  
-  r = length (obj.poly) - 1;
-
-endfunction
--- a/examples/@polynomial/get.m	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-function s = get (p, f)
-  if (nargin == 1)
-    s.poly = p.poly;
-  elseif (nargin == 2)
-    if (ischar (f))
-      switch (f)
-        case "poly"
-          s = p.poly;
-        otherwise
-          error ("get: invalid property %s", f);
-      endswitch
-    else
-      error ("get: expecting the property to be a string");
-    endif
-  else
-    print_usage ();
-  endif
-endfunction
--- a/examples/@polynomial/module.mk	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,21 +0,0 @@
-FCN_FILE_DIRS += @polynomial
-
-EXTRA_DIST += @polynomial/module.mk
-
-at_polynomial_FCN_FILES = \
-  @polynomial/display.m \
-  @polynomial/double.m \
-  @polynomial/end.m \
-  @polynomial/get.m \
-  @polynomial/mtimes.m \
-  @polynomial/numel.m \
-  @polynomial/plot.m \
-  @polynomial/polynomial.m \
-  @polynomial/polynomial_superiorto.m \
-  @polynomial/polyval.m \
-  @polynomial/roots.m \
-  @polynomial/set.m \
-  @polynomial/subsasgn.m \
-  @polynomial/subsref.m
-
-FCN_FILES += $(at_polynomial_FCN_FILES)
--- a/examples/@polynomial/mtimes.m	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-function y = mtimes (a, b)
-  y = polynomial (conv (double (a), double (b)));
-endfunction
--- a/examples/@polynomial/numel.m	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-function n = numel (obj, idx)
-
-  # always produce an array.
-  n = 1;
-
-endfunction
-
--- a/examples/@polynomial/plot.m	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-function h = plot (p, varargin)
-  n = 128;
-  rmax = max (abs (roots (p.poly)));
-  x = [0 : (n - 1)] / (n - 1) * 2.2 * rmax - 1.1 * rmax;
-  if (nargout > 0)
-    h = plot (x, p(x), varargin{:});
-  else
-    plot (x, p(x), varargin{:});
-  endif
-endfunction
--- a/examples/@polynomial/polynomial.m	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-## -*- texinfo -*-
-## @deftypefn  {Function File} {} polynomial ()
-## @deftypefnx {Function File} {} polynomial (@var{a})
-## Create a polynomial object representing the polynomial
-##
-## @example
-## a0 + a1 * x + a2 * x^2 + @dots{} + an * x^n
-## @end example
-##
-## @noindent
-## from a vector of coefficients [a0 a1 a2 @dots{} an].
-## @end deftypefn
-
-function p = polynomial (a)
-  if (nargin == 0)
-    p.poly = [0];
-    p = class (p, "polynomial");
-  elseif (nargin == 1)
-    if (strcmp (class (a), "polynomial"))
-      p = a;
-    elseif (isvector (a) && isreal (a))
-      p.poly = a(:).';
-      p = class (p, "polynomial");
-    else
-      error ("polynomial: expecting real vector");
-    endif
-  else
-    print_usage ();
-  endif
-endfunction
--- a/examples/@polynomial/polynomial_superiorto.m	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-## -*- texinfo -*-
-## @deftypefn  {Function File} {} polynomial ()
-## @deftypefnx {Function File} {} polynomial (@var{a})
-## Create a polynomial object representing the polynomial
-##
-## @example
-## a0 + a1 * x + a2 * x^2 + @dots{} + an * x^n
-## @end example
-##
-## @noindent
-## from a vector of coefficients [a0 a1 a2 @dots{} an].
-## @end deftypefn
-
-function p = polynomial (a)
-  if (nargin == 0)
-    p.poly = [0];
-    p = class (p, "polynomial");
-  elseif (nargin == 1)
-    if (strcmp (class (a), "polynomial"))
-      p = a;
-    elseif (isvector (a) && isreal (a))
-      p.poly = a(:).';
-      p = class (p, "polynomial");
-    else
-      error ("polynomial: expecting real vector");
-    endif
-  else
-    print_usage ();
-  endif
-  superiorto ("double");
-endfunction
--- a/examples/@polynomial/polyval.m	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-function [y, dy] = polyval (p, varargin)
-  if (nargout == 2)
-    [y, dy] = polyval (fliplr (p.poly), varargin{:});
-  else
-    y = polyval (fliplr (p.poly), varargin{:});
-  endif
-endfunction
--- a/examples/@polynomial/roots.m	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-function y = roots (p)
-  y = roots(fliplr(p.poly));
-endfunction
\ No newline at end of file
--- a/examples/@polynomial/set.m	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-function s = set (p, varargin)
-  s = p;
-  if (length (varargin) < 2 || rem (length (varargin), 2) != 0)
-    error ("set: expecting property/value pairs");
-  endif
-  while (length (varargin) > 1)
-    prop = varargin{1};
-    val = varargin{2};
-    varargin(1:2) = [];
-    if (ischar (prop) && strcmp (prop, "poly"))
-      if (isvector (val) && isreal (val))
-        s.poly = val(:).';
-      else
-        error ("set: expecting the value to be a real vector");
-      endif
-    else
-      error ("set: invalid property of polynomial class");
-    endif
-  endwhile
-endfunction
--- a/examples/@polynomial/subsasgn.m	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-function p = subsasgn (p, s, val)
-  if (length (s) < 1)
-    error ("polynomial: needs index");
-  endif
-  switch (s(1).type)
-    case "{}"
-      ind = s(1).subs;
-      if (numel (ind) != 1)
-        error ("polynomial: need exactly one index");
-      else
-        if (length (s) == 1)
-          if (isnumeric (ind{1}))
-            p.poly(ind{1}+1) = val; 
-          else
-            p.poly(ind{1}) = val;
-          endif
-        else
-          error ("polynomial: chained subscripts not allowed for {}");
-        endif
-      endif
-    case "."
-      fld = s(1).subs;
-      if (strcmp (fld, "poly"))
-        if (length (s) == 1)
-          p.poly = val;
-        else
-          p.poly = subsasgn (p.poly, s(2:end), val);
-        endif
-      else
-        error ("@polynomial/subsref: invalid property \"%s\"", fld);
-      endif
-    otherwise
-      error ("invalid subscript type");
-  endswitch
-endfunction
--- a/examples/@polynomial/subsref.m	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-function b = subsref (a, s)
-  if (isempty (s))
-    error ("polynomial: missing index");
-  endif
-  switch (s(1).type)
-    case "()"
-      ind = s(1).subs;
-      if (numel (ind) != 1)
-        error ("polynomial: need exactly one index");
-      else
-        b = polyval (fliplr (a.poly), ind{1});
-      endif
-    case "{}"
-      ind = s(1).subs;
-      if (numel (ind) != 1)
-        error ("polynomial: need exactly one index");
-      else
-        if (isnumeric (ind{1}))
-          b = a.poly(ind{1}+1);
-        else
-          b = a.poly(ind{1});
-        endif
-      endif
-    case "."
-      fld = s.subs;
-      if (strcmp (fld, "poly"))
-        b = a.poly;
-      else
-        error ("@polynomial/subsref: invalid property \"%s\"", fld);
-      endif
-    otherwise
-      error ("invalid subscript type");
-  endswitch
-  if (numel (s) > 1)
-    b = subsref (b, s(2:end));
-  endif
-endfunction
--- a/examples/COPYING	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-Copyright notices are intentionally omitted from the files in the
-examples directory.  We don't want copyright notices cluttering the
-manual.
--- a/examples/Makefile.am	Tue Aug 19 05:41:06 2014 -0400
+++ b/examples/Makefile.am	Tue Aug 19 14:32:44 2014 -0700
@@ -1,6 +1,6 @@
-# Makefile for Octave's examples directory
+# Makefile for Octave's example directory
 #
-# Copyright (C) 1996-2013 John W. Eaton
+# Copyright (C) 1993-2013 John W. Eaton
 #
 # This file is part of Octave.
 # 
@@ -18,47 +18,12 @@
 # along with Octave; see the file COPYING.  If not, see
 # <http://www.gnu.org/licenses/>.
 
+## Pass-through layer.  Simply pass make commands down to SUBDIRS.
+
 include $(top_srcdir)/build-aux/common.mk
 
-EXTRA_DIST = 
-
-FCN_FILE_DIRS =
-
-FCN_FILES =
-
-include @polynomial/module.mk
-include @FIRfilter/module.mk
+EXTRA_DIST = \
+  Makefile.am
 
-EXTRA_DIST += \
-  $(FCN_FILES) \
-  addtwomatrices.cc \
-  celldemo.cc \
-  embedded.cc \
-  fortrandemo.cc \
-  fortransub.f \
-  funcdemo.cc \
-  globaldemo.cc \
-  helloworld.cc \
-  make_int.cc \
-  mex_demo.c \
-  mycell.c \
-  myfeval.c \
-  myfevalf.f \
-  myfunc.c \
-  myhello.c \
-  mypow2.c \
-  myprop.c \
-  myset.c \
-  mysparse.c \
-  mystring.c \
-  mystruct.c \
-  oct_demo.cc \
-  oregonator.cc \
-  oregonator.m \
-  paramdemo.cc \
-  standalone.cc \
-  standalonebuiltin.cc \
-  stringdemo.cc \
-  structdemo.cc \
-  unwinddemo.cc
+SUBDIRS = code data
 
--- a/examples/addtwomatrices.cc	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-#include <octave/oct.h>
-
-DEFUN_DLD (addtwomatrices, args, , "Add A to B")
-{
-  int nargin = args.length ();
-
-  if (nargin != 2)
-    print_usage ();
-  else
-    {
-      NDArray A = args(0).array_value ();
-      NDArray B = args(1).array_value ();
-      if (! error_state)
-        return octave_value (A + B);
-    }
-
-  return octave_value_list ();
-}
--- a/examples/celldemo.cc	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-#include <octave/oct.h>
-#include <octave/Cell.h>
-
-DEFUN_DLD (celldemo, args, , "Cell Demo")
-{
-  octave_value_list retval;
-  int nargin = args.length ();
-
-  if (nargin != 1)
-    print_usage ();
-  else
-    {
-      Cell c = args(0).cell_value ();
-      if (! error_state)
-        for (octave_idx_type i = 0; i < c.numel (); i++)
-          {
-            retval(i) = c(i);          // using operator syntax
-            //retval(i) = c.elem (i);  // using method syntax
-          }
-    }
-
-  return retval;
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/@FIRfilter/FIRfilter.m	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,20 @@
+## -*- texinfo -*-
+## @deftypefn  {Function File} {} FIRfilter ()
+## @deftypefnx {Function File} {} FIRfilter (@var{p})
+## Create a FIR filter with polynomial @var{p} as coefficient vector.
+## @end deftypefn
+
+function f = FIRfilter (p)
+
+  f.polynomial = [];
+  if (nargin == 0)
+    p = @polynomial ([1]);
+  elseif (nargin == 1)
+    if (!isa (p, "polynomial"))
+      error ("FIRfilter: expecting polynomial as input argument");
+    endif
+  else
+    print_usage ();
+  endif
+  f = class (f, "FIRfilter", p);
+endfunction
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/@FIRfilter/FIRfilter_aggregation.m	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,21 @@
+## -*- texinfo -*-
+## @deftypefn  {Function File} {} FIRfilter ()
+## @deftypefnx {Function File} {} FIRfilter (@var{p})
+## Create a FIR filter with polynomial @var{p} as coefficient vector.
+## @end deftypefn
+
+function f = FIRfilter (p)
+
+  if (nargin == 0)
+    f.polynomial = @polynomial ([1]);
+  elseif (nargin == 1)
+    if (isa (p, "polynomial"))
+      f.polynomial = p;
+    else
+      error ("FIRfilter: expecting polynomial as input argument");
+    endif
+  else
+    print_usage ();
+  endif
+  f = class (f, "FIRfilter");
+endfunction
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/@FIRfilter/display.m	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,6 @@
+function display (f)
+
+  display (f.polynomial);
+
+endfunction
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/@FIRfilter/module.mk	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,12 @@
+FCN_FILE_DIRS += @FIRfilter
+
+EXTRA_DIST += @FIRfilter/module.mk
+
+at_FIRfilter_FCN_FILES = \
+  @FIRfilter/display.m \
+  @FIRfilter/FIRfilter_aggregation.m \
+  @FIRfilter/FIRfilter.m \
+  @FIRfilter/subsasgn.m \
+  @FIRfilter/subsref.m
+
+FCN_FILES += $(at_FIRfilter_FCN_FILES)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/@FIRfilter/subsasgn.m	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,14 @@
+function out = subsasgn (f, index, val)
+  switch (index.type)
+    case "."
+      fld = index.subs;
+      if (strcmp (fld, "polynomial"))
+        out = f;
+        out.polynomial = val;
+      else
+        error ("@FIRfilter/subsref: invalid property \"%s\"", fld);
+      endif
+    otherwise
+      error ("FIRfilter/subsagn: Invalid index type")
+  endswitch
+endfunction
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/@FIRfilter/subsref.m	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,16 @@
+function out = subsref (f, x)
+  switch (x.type)
+    case "()"
+      n = f.polynomial;
+      out = filter (n.poly, 1, x.subs{1});
+    case "."
+      fld = x.subs;
+      if (strcmp (fld, "polynomial"))
+        out = f.polynomial;
+      else
+        error ("@FIRfilter/subsref: invalid property \"%s\"", fld);
+      endif
+    otherwise
+      error ("@FIRfilter/subsref: invalid subscript type for FIR filter");
+  endswitch
+endfunction
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/@polynomial/display.m	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,32 @@
+function display (p)
+  a = p.poly;
+  first = true;
+  fprintf ("%s =", inputname (1));
+  for i = 1 : length (a);
+    if (a(i) != 0)
+      if (first)
+        first = false;
+      elseif (a(i) > 0)
+        fprintf (" +");
+      endif
+      if (a(i) < 0)
+        fprintf (" -");
+      endif
+      if (i == 1)
+        fprintf (" %g", abs (a(i)));
+      elseif (abs(a(i)) != 1)
+        fprintf (" %g *", abs (a(i)));
+      endif
+      if (i > 1)
+        fprintf (" X");
+      endif
+      if (i > 2)
+        fprintf (" ^ %d", i - 1);
+      endif
+    endif
+  endfor
+  if (first)
+    fprintf (" 0");
+  endif
+  fprintf ("\n");
+endfunction
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/@polynomial/double.m	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,3 @@
+function b = double (a)
+  b = a.poly;
+endfunction
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/@polynomial/end.m	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,9 @@
+function r = end (obj, index_pos, num_indices)
+
+  if (num_indices != 1)
+    error ("polynomial object may only have one index")
+  endif
+  
+  r = length (obj.poly) - 1;
+
+endfunction
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/@polynomial/get.m	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,18 @@
+function s = get (p, f)
+  if (nargin == 1)
+    s.poly = p.poly;
+  elseif (nargin == 2)
+    if (ischar (f))
+      switch (f)
+        case "poly"
+          s = p.poly;
+        otherwise
+          error ("get: invalid property %s", f);
+      endswitch
+    else
+      error ("get: expecting the property to be a string");
+    endif
+  else
+    print_usage ();
+  endif
+endfunction
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/@polynomial/module.mk	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,21 @@
+FCN_FILE_DIRS += @polynomial
+
+EXTRA_DIST += @polynomial/module.mk
+
+at_polynomial_FCN_FILES = \
+  @polynomial/display.m \
+  @polynomial/double.m \
+  @polynomial/end.m \
+  @polynomial/get.m \
+  @polynomial/mtimes.m \
+  @polynomial/numel.m \
+  @polynomial/plot.m \
+  @polynomial/polynomial.m \
+  @polynomial/polynomial_superiorto.m \
+  @polynomial/polyval.m \
+  @polynomial/roots.m \
+  @polynomial/set.m \
+  @polynomial/subsasgn.m \
+  @polynomial/subsref.m
+
+FCN_FILES += $(at_polynomial_FCN_FILES)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/@polynomial/mtimes.m	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,3 @@
+function y = mtimes (a, b)
+  y = polynomial (conv (double (a), double (b)));
+endfunction
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/@polynomial/numel.m	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,7 @@
+function n = numel (obj, idx)
+
+  # always produce an array.
+  n = 1;
+
+endfunction
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/@polynomial/plot.m	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,10 @@
+function h = plot (p, varargin)
+  n = 128;
+  rmax = max (abs (roots (p.poly)));
+  x = [0 : (n - 1)] / (n - 1) * 2.2 * rmax - 1.1 * rmax;
+  if (nargout > 0)
+    h = plot (x, p(x), varargin{:});
+  else
+    plot (x, p(x), varargin{:});
+  endif
+endfunction
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/@polynomial/polynomial.m	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,30 @@
+## -*- texinfo -*-
+## @deftypefn  {Function File} {} polynomial ()
+## @deftypefnx {Function File} {} polynomial (@var{a})
+## Create a polynomial object representing the polynomial
+##
+## @example
+## a0 + a1 * x + a2 * x^2 + @dots{} + an * x^n
+## @end example
+##
+## @noindent
+## from a vector of coefficients [a0 a1 a2 @dots{} an].
+## @end deftypefn
+
+function p = polynomial (a)
+  if (nargin == 0)
+    p.poly = [0];
+    p = class (p, "polynomial");
+  elseif (nargin == 1)
+    if (strcmp (class (a), "polynomial"))
+      p = a;
+    elseif (isvector (a) && isreal (a))
+      p.poly = a(:).';
+      p = class (p, "polynomial");
+    else
+      error ("polynomial: expecting real vector");
+    endif
+  else
+    print_usage ();
+  endif
+endfunction
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/@polynomial/polynomial_superiorto.m	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,31 @@
+## -*- texinfo -*-
+## @deftypefn  {Function File} {} polynomial ()
+## @deftypefnx {Function File} {} polynomial (@var{a})
+## Create a polynomial object representing the polynomial
+##
+## @example
+## a0 + a1 * x + a2 * x^2 + @dots{} + an * x^n
+## @end example
+##
+## @noindent
+## from a vector of coefficients [a0 a1 a2 @dots{} an].
+## @end deftypefn
+
+function p = polynomial (a)
+  if (nargin == 0)
+    p.poly = [0];
+    p = class (p, "polynomial");
+  elseif (nargin == 1)
+    if (strcmp (class (a), "polynomial"))
+      p = a;
+    elseif (isvector (a) && isreal (a))
+      p.poly = a(:).';
+      p = class (p, "polynomial");
+    else
+      error ("polynomial: expecting real vector");
+    endif
+  else
+    print_usage ();
+  endif
+  superiorto ("double");
+endfunction
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/@polynomial/polyval.m	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,7 @@
+function [y, dy] = polyval (p, varargin)
+  if (nargout == 2)
+    [y, dy] = polyval (fliplr (p.poly), varargin{:});
+  else
+    y = polyval (fliplr (p.poly), varargin{:});
+  endif
+endfunction
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/@polynomial/roots.m	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,3 @@
+function y = roots (p)
+  y = roots(fliplr(p.poly));
+endfunction
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/@polynomial/set.m	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,20 @@
+function s = set (p, varargin)
+  s = p;
+  if (length (varargin) < 2 || rem (length (varargin), 2) != 0)
+    error ("set: expecting property/value pairs");
+  endif
+  while (length (varargin) > 1)
+    prop = varargin{1};
+    val = varargin{2};
+    varargin(1:2) = [];
+    if (ischar (prop) && strcmp (prop, "poly"))
+      if (isvector (val) && isreal (val))
+        s.poly = val(:).';
+      else
+        error ("set: expecting the value to be a real vector");
+      endif
+    else
+      error ("set: invalid property of polynomial class");
+    endif
+  endwhile
+endfunction
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/@polynomial/subsasgn.m	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,35 @@
+function p = subsasgn (p, s, val)
+  if (length (s) < 1)
+    error ("polynomial: needs index");
+  endif
+  switch (s(1).type)
+    case "{}"
+      ind = s(1).subs;
+      if (numel (ind) != 1)
+        error ("polynomial: need exactly one index");
+      else
+        if (length (s) == 1)
+          if (isnumeric (ind{1}))
+            p.poly(ind{1}+1) = val; 
+          else
+            p.poly(ind{1}) = val;
+          endif
+        else
+          error ("polynomial: chained subscripts not allowed for {}");
+        endif
+      endif
+    case "."
+      fld = s(1).subs;
+      if (strcmp (fld, "poly"))
+        if (length (s) == 1)
+          p.poly = val;
+        else
+          p.poly = subsasgn (p.poly, s(2:end), val);
+        endif
+      else
+        error ("@polynomial/subsref: invalid property \"%s\"", fld);
+      endif
+    otherwise
+      error ("invalid subscript type");
+  endswitch
+endfunction
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/@polynomial/subsref.m	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,37 @@
+function b = subsref (a, s)
+  if (isempty (s))
+    error ("polynomial: missing index");
+  endif
+  switch (s(1).type)
+    case "()"
+      ind = s(1).subs;
+      if (numel (ind) != 1)
+        error ("polynomial: need exactly one index");
+      else
+        b = polyval (fliplr (a.poly), ind{1});
+      endif
+    case "{}"
+      ind = s(1).subs;
+      if (numel (ind) != 1)
+        error ("polynomial: need exactly one index");
+      else
+        if (isnumeric (ind{1}))
+          b = a.poly(ind{1}+1);
+        else
+          b = a.poly(ind{1});
+        endif
+      endif
+    case "."
+      fld = s.subs;
+      if (strcmp (fld, "poly"))
+        b = a.poly;
+      else
+        error ("@polynomial/subsref: invalid property \"%s\"", fld);
+      endif
+    otherwise
+      error ("invalid subscript type");
+  endswitch
+  if (numel (s) > 1)
+    b = subsref (b, s(2:end));
+  endif
+endfunction
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/COPYING	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,3 @@
+Copyright notices are intentionally omitted from the files in the
+examples directory.  We don't want copyright notices cluttering the
+manual.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/Makefile.am	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,64 @@
+# Makefile for Octave's examples directory
+#
+# Copyright (C) 1996-2013 John W. Eaton
+#
+# 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
+# <http://www.gnu.org/licenses/>.
+
+include $(top_srcdir)/build-aux/common.mk
+
+EXTRA_DIST = 
+
+FCN_FILE_DIRS =
+
+FCN_FILES =
+
+include @polynomial/module.mk
+include @FIRfilter/module.mk
+
+EXTRA_DIST += \
+  $(FCN_FILES) \
+  addtwomatrices.cc \
+  celldemo.cc \
+  embedded.cc \
+  fortrandemo.cc \
+  fortransub.f \
+  funcdemo.cc \
+  globaldemo.cc \
+  helloworld.cc \
+  make_int.cc \
+  mex_demo.c \
+  mycell.c \
+  myfeval.c \
+  myfevalf.f \
+  myfunc.c \
+  myhello.c \
+  mypow2.c \
+  myprop.c \
+  myset.c \
+  mysparse.c \
+  mystring.c \
+  mystruct.c \
+  oct_demo.cc \
+  oregonator.cc \
+  oregonator.m \
+  paramdemo.cc \
+  standalone.cc \
+  standalonebuiltin.cc \
+  stringdemo.cc \
+  structdemo.cc \
+  unwinddemo.cc
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/addtwomatrices.cc	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,18 @@
+#include <octave/oct.h>
+
+DEFUN_DLD (addtwomatrices, args, , "Add A to B")
+{
+  int nargin = args.length ();
+
+  if (nargin != 2)
+    print_usage ();
+  else
+    {
+      NDArray A = args(0).array_value ();
+      NDArray B = args(1).array_value ();
+      if (! error_state)
+        return octave_value (A + B);
+    }
+
+  return octave_value_list ();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/celldemo.cc	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,23 @@
+#include <octave/oct.h>
+#include <octave/Cell.h>
+
+DEFUN_DLD (celldemo, args, , "Cell Demo")
+{
+  octave_value_list retval;
+  int nargin = args.length ();
+
+  if (nargin != 1)
+    print_usage ();
+  else
+    {
+      Cell c = args(0).cell_value ();
+      if (! error_state)
+        for (octave_idx_type i = 0; i < c.numel (); i++)
+          {
+            retval(i) = c(i);          // using operator syntax
+            //retval(i) = c.elem (i);  // using method syntax
+          }
+    }
+
+  return retval;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/embedded.cc	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,35 @@
+#include <iostream>
+#include <octave/oct.h>
+#include <octave/octave.h>
+#include <octave/parse.h>
+#include <octave/toplev.h>
+
+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;
+  octave_value_list in;
+
+  for (octave_idx_type i = 0; i < n; i++)
+    in(i) = octave_value (5 * (i + 2));
+
+  octave_value_list out = feval ("gcd", in, 1);
+
+  if (! error_state && out.length () > 0)
+    std::cout << "GCD of ["
+              << in(0).int_value ()
+              << ", "
+              << in(1).int_value ()
+              << "] is " << out(0).int_value ()
+              << std::endl;
+  else
+    std::cout << "invalid\n";
+
+  clean_up_and_exit (0);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/fortrandemo.cc	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,35 @@
+#include <octave/oct.h>
+#include <octave/f77-fcn.h>
+
+extern "C"
+{
+  F77_RET_T
+  F77_FUNC (fortransub, FORTSUB)
+    (const int&, double*, F77_CHAR_ARG_DECL F77_CHAR_ARG_LEN_DECL);
+}
+
+DEFUN_DLD (fortrandemo, args, , "Fortran Demo")
+{
+  octave_value_list retval;
+  int nargin = args.length ();
+
+  if (nargin != 1)
+    print_usage ();
+  else
+    {
+      NDArray a = args(0).array_value ();
+      if (! error_state)
+        {
+          double *av = a.fortran_vec ();
+          octave_idx_type na = a.numel ();
+          OCTAVE_LOCAL_BUFFER (char, ctmp, 128);
+
+          F77_XFCN (fortransub, FORTSUB,
+                    (na, av, ctmp F77_CHAR_ARG_LEN (128)));
+
+          retval(1) = std::string (ctmp);
+          retval(0) = a;
+        }
+    }
+  return retval;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/fortransub.f	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,21 @@
+      subroutine fortransub (n, a, s)
+      implicit none
+      character*(*) s
+      real*8 a(*)
+      integer*4 i, n, ioerr
+      do i = 1, n
+        if (a(i) .eq. 0d0) then
+          call xstopx ('fortransub: divide by zero')
+        else
+          a(i) = 1d0 / a(i)
+        endif
+      enddo
+      write (unit = s, fmt = '(a,i3,a,a)', iostat = ioerr)
+     $       'There are ', n,
+     $       ' values in the input vector', char(0)
+      if (ioerr .ne. 0) then
+        call xstopx ('fortransub: error writing string')
+      endif
+      return
+      end
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/funcdemo.cc	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,32 @@
+#include <octave/oct.h>
+#include <octave/parse.h>
+
+DEFUN_DLD (funcdemo, args, nargout, "Function Demo")
+{
+  octave_value_list retval;
+  int nargin = args.length ();
+
+  if (nargin < 2)
+    print_usage ();
+  else
+    {
+      octave_value_list newargs;
+      for (octave_idx_type i = nargin - 1; i > 0; i--)
+        newargs(i-1) = args(i);
+      if (args(0).is_function_handle () || args(0).is_inline_function ())
+        {
+          octave_function *fcn = args(0).function_value ();
+          if (! error_state)
+            retval = feval (fcn, newargs, nargout);
+        }
+      else if (args(0).is_string ())
+        {
+          std::string fcn = args(0).string_value ();
+          if (! error_state)
+            retval = feval (fcn, newargs, nargout);
+        }
+      else
+        error ("funcdemo: INPUT must be string, inline, or function handle");
+    }
+  return retval;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/globaldemo.cc	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,25 @@
+#include <octave/oct.h>
+
+DEFUN_DLD (globaldemo, args, , "Global Demo")
+{
+  octave_value retval;
+  int nargin = args.length ();
+
+  if (nargin != 1)
+    print_usage ();
+  else
+    {
+      std::string s = args(0).string_value ();
+      if (! error_state)
+        {
+          octave_value tmp = get_global_value (s, true);
+          if (tmp.is_defined ())
+            retval = tmp;
+          else
+            retval = "Global variable not found";
+
+          set_global_value ("a", 42.0);
+        }
+    }
+  return retval;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/helloworld.cc	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,13 @@
+#include <octave/oct.h>
+
+DEFUN_DLD (helloworld, args, nargout,
+           "Hello World Help String")
+{
+  int nargin = args.length ();
+
+  octave_stdout << "Hello World has "
+                << nargin << " input arguments and "
+                << nargout << " output arguments.\n";
+
+  return octave_value_list ();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/make_int.cc	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,316 @@
+#include <octave/config.h>
+
+#include <cstdlib>
+
+#include <string>
+
+#include <ostream>
+
+#include <octave/lo-mappers.h>
+#include <octave/lo-utils.h>
+#include <octave/mx-base.h>
+#include <octave/str-vec.h>
+
+#include <octave/defun-dld.h>
+#include <octave/error.h>
+#include <octave/gripes.h>
+#include <octave/oct-obj.h>
+#include <octave/ops.h>
+#include <octave/ov-base.h>
+#include <octave/ov-typeinfo.h>
+#include <octave/ov.h>
+#include <octave/ov-scalar.h>
+#include <octave/pager.h>
+#include <octave/pr-output.h>
+#include <octave/symtab.h>
+#include <octave/variables.h>
+
+class octave_value_list;
+
+class tree_walker;
+
+// Integer values.
+
+class
+octave_integer : public octave_base_value
+{
+public:
+
+  octave_integer (void)
+    : octave_base_value (), scalar (0) { }
+
+  octave_integer (int i)
+    : octave_base_value (), scalar (i) { }
+
+  octave_integer (const octave_integer& s)
+    : octave_base_value (), scalar (s.scalar) { }
+
+  ~octave_integer (void) { }
+
+  octave_base_value *clone (void) { return new octave_integer (*this); }
+
+#if 0
+  void *operator new (size_t size);
+  void operator delete (void *p, size_t size);
+#endif
+
+  idx_vector index_vector (void) const { return idx_vector ((double) scalar); }
+
+  int rows (void) const { return 1; }
+  int columns (void) const { return 1; }
+
+  bool is_constant (void) const { return true; }
+
+  bool is_defined (void) const { return true; }
+  bool is_real_scalar (void) const { return true; }
+
+  octave_value all (void) const { return (double) (scalar != 0); }
+  octave_value any (void) const { return (double) (scalar != 0); }
+
+  bool is_real_type (void) const { return true; }
+  bool is_scalar_type (void) const { return true; }
+  bool is_numeric_type (void) const { return true; }
+
+  bool valid_as_scalar_index (void) const
+  { return scalar == 1; }
+
+  bool valid_as_zero_index (void) const
+  { return scalar == 0; }
+
+  bool is_true (void) const { return (scalar != 0); }
+
+  double double_value (bool = false) const { return (double) scalar; }
+
+  int integer_value (bool = false) const { return scalar; }
+
+  Matrix matrix_value (bool = false) const { return Matrix (1, 1, scalar); }
+
+  Complex complex_value (bool = false) const { return scalar; }
+
+  ComplexMatrix complex_matrix_value (bool = false) const
+  { return  ComplexMatrix (1, 1, Complex (scalar)); }
+
+  octave_value gnot (void) const { return octave_value ((double) ! scalar); }
+
+  octave_value uminus (void) const { return new octave_integer (- scalar); }
+
+  octave_value transpose (void) const { return new octave_integer (scalar); }
+
+  octave_value hermitian (void) const { return new octave_integer (scalar); }
+
+  void increment (void) { ++scalar; }
+
+  void decrement (void) { --scalar; }
+
+  void print (std::ostream& os, bool pr_as_read_syntax = false) const;
+
+private:
+
+  int scalar;
+
+  DECLARE_OCTAVE_ALLOCATOR
+
+  DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA
+};
+
+void
+octave_integer::print (std::ostream& os, bool pr_as_read_syntax) const
+{
+  os << scalar;
+  // octave_print_internal (os, scalar, pr_as_read_syntax);
+}
+
+#ifdef DEFUNOP_OP
+#undef DEFUNOP_OP
+#endif
+
+#define DEFUNOP_OP(name, t, op) \
+  UNOPDECL (name, a) \
+  { \
+    CAST_UNOP_ARG (const octave_ ## t&); \
+    return octave_value (new octave_integer (op v.t ## _value ())); \
+  }
+
+DEFUNOP_OP (gnot, integer, !)
+DEFUNOP_OP (uminus, integer, -)
+DEFUNOP_OP (transpose, integer, /* no-op */)
+DEFUNOP_OP (hermitian, integer, /* no-op */)
+
+DEFNCUNOP_METHOD (incr, integer, increment)
+DEFNCUNOP_METHOD (decr, integer, decrement)
+
+#ifdef DEFBINOP_OP
+#undef DEFBINOP_OP
+#endif
+
+#define DEFBINOP_OP(name, t1, t2, op) \
+  BINOPDECL (name, a1, a2) \
+  { \
+    CAST_BINOP_ARGS (const octave_ ## t1&, const octave_ ## t2&); \
+    return octave_value \
+      (new octave_integer (v1.t1 ## _value () op v2.t2 ## _value ())); \
+  }
+
+// integer by integer ops.
+
+DEFBINOP_OP (add, integer, integer, +)
+DEFBINOP_OP (sub, integer, integer, -)
+DEFBINOP_OP (mul, integer, integer, *)
+
+DEFBINOP (div, integer, integer)
+{
+  CAST_BINOP_ARGS (const octave_integer&, const octave_integer&);
+
+  int d = v2.integer_value ();
+
+  if (d == 0)
+    gripe_divide_by_zero ();
+
+  return new octave_integer (v1.integer_value () / d);
+}
+
+
+DEFBINOP (i_s_div, integer, scalar)
+{
+  CAST_BINOP_ARGS (const octave_integer&, const octave_scalar&);
+
+  double d = v2.double_value ();
+
+  if (d == 0.0)
+    gripe_divide_by_zero ();
+
+  return new octave_scalar (v1.double_value () / d);
+}
+
+DEFBINOP (ldiv, integer, integer)
+{
+  CAST_BINOP_ARGS (const octave_integer&, const octave_integer&);
+
+  int d = v1.integer_value ();
+
+  if (d == 0)
+    gripe_divide_by_zero ();
+
+  return new octave_integer (v2.integer_value () / d);
+}
+
+DEFBINOP_OP (lt, integer, integer, <)
+DEFBINOP_OP (le, integer, integer, <=)
+DEFBINOP_OP (eq, integer, integer, ==)
+DEFBINOP_OP (ge, integer, integer, >=)
+DEFBINOP_OP (gt, integer, integer, >)
+DEFBINOP_OP (ne, integer, integer, !=)
+
+DEFBINOP_OP (el_mul, integer, integer, !=)
+
+DEFBINOP (el_div, integer, integer)
+{
+  CAST_BINOP_ARGS (const octave_integer&, const octave_integer&);
+
+  int d = v2.integer_value ();
+
+  if (d == 0)
+    gripe_divide_by_zero ();
+
+  return new octave_integer (v1.integer_value () / d);
+}
+
+DEFBINOP (el_ldiv, integer, integer)
+{
+  CAST_BINOP_ARGS (const octave_integer&, const octave_integer&);
+
+  int d = v1.integer_value ();
+
+  if (d == 0)
+    gripe_divide_by_zero ();
+
+  return new octave_integer (v2.integer_value () / d);
+}
+
+DEFBINOP_OP (el_and, integer, integer, &&)
+DEFBINOP_OP (el_or, integer, integer, ||)
+
+DEFUN_DLD (make_int, args, ,
+           "int_val = make_int (val)\n\
+\n\
+Creates an integer variable from VAL.")
+{
+  static bool type_loaded = false;
+
+  if (! type_loaded)
+    {
+      octave_integer::register_type ();
+      mlock ();
+
+      octave_stdout << "installing integer type at type-id = "
+                    << octave_integer::static_type_id () << "\n";
+
+      INSTALL_UNOP (op_not, octave_integer, gnot);
+      INSTALL_UNOP (op_uminus, octave_integer, uminus);
+      INSTALL_UNOP (op_transpose, octave_integer, transpose);
+      INSTALL_UNOP (op_hermitian, octave_integer, hermitian);
+
+      INSTALL_NCUNOP (op_incr, octave_integer, incr);
+      INSTALL_NCUNOP (op_decr, octave_integer, decr);
+
+      INSTALL_BINOP (op_add, octave_integer, octave_integer, add);
+      INSTALL_BINOP (op_sub, octave_integer, octave_integer, sub);
+      INSTALL_BINOP (op_mul, octave_integer, octave_integer, mul);
+      INSTALL_BINOP (op_div, octave_integer, octave_integer, div);
+      INSTALL_BINOP (op_ldiv, octave_integer, octave_integer, ldiv);
+      INSTALL_BINOP (op_lt, octave_integer, octave_integer, lt);
+      INSTALL_BINOP (op_le, octave_integer, octave_integer, le);
+      INSTALL_BINOP (op_eq, octave_integer, octave_integer, eq);
+      INSTALL_BINOP (op_ge, octave_integer, octave_integer, ge);
+      INSTALL_BINOP (op_gt, octave_integer, octave_integer, gt);
+      INSTALL_BINOP (op_ne, octave_integer, octave_integer, ne);
+      INSTALL_BINOP (op_el_mul, octave_integer, octave_integer, el_mul);
+      INSTALL_BINOP (op_el_div, octave_integer, octave_integer, el_div);
+      INSTALL_BINOP (op_el_ldiv, octave_integer, octave_integer, el_ldiv);
+      INSTALL_BINOP (op_el_and, octave_integer, octave_integer, el_and);
+      INSTALL_BINOP (op_el_or, octave_integer, octave_integer, el_or);
+
+      INSTALL_BINOP (op_div, octave_integer, octave_scalar, i_s_div);
+    }
+
+  octave_value retval;
+
+  if (args.length () == 1)
+    {
+      double d = args(0).double_value ();
+
+      if (! error_state)
+        retval = octave_value (new octave_integer (NINT (d)));
+    }
+  else
+    usage ("make_int");
+
+  return retval;
+}
+
+DEFUN_DLD (doit, args, ,
+           "doit (I)")
+{
+  octave_value_list retval;
+
+  if (args(0).type_id () == octave_integer::static_type_id ())
+    {
+      // At this point, we know we have a handle for an octave_integer
+      // object, so we can peek at the representation and extract the
+      // data.
+
+      const octave_base_value& rep = args(0).get_rep ();
+
+      int my_value = ((const octave_integer&) rep) . integer_value ();
+
+      message ("doit", "your lucky number is: %d", my_value);
+    }
+  else
+    gripe_wrong_type_arg ("doit", args(0));
+
+  return retval;
+}
+
+DEFINE_OCTAVE_ALLOCATOR (octave_integer);
+
+DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA (octave_integer, "integer", "integer");
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/mex_demo.c	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,58 @@
+// mex_demo.c -- example of a dynamically linked function for Octave.
+
+// To use this file, your version of Octave must support dynamic
+// linking.  To find out if it does, type the command
+//
+//   octave_config_info ("ENABLE_DYNAMIC_LINKING")
+//
+// at the Octave prompt.  Support for dynamic linking is included if
+// this expression returns the string "yes".
+//
+// To compile this file, type the command
+//
+//   mkoctfile --mex mex_demo.c
+//
+// from within Octave or from the shell prompt.  This will create a file
+// called mex_demo.mex that can be loaded by Octave.  To test the mex_demo.mex
+// file, start Octave and type the command
+//
+// d = mex_demo ("easy as", 1, 2, 3)
+//
+// at the Octave prompt.  Octave should respond by printing
+//
+//   Hello, world!
+//   I have 4 inputs and 1 output
+//   d =  1.2346
+
+// Additional samples of code are in the examples directory of the Octave
+// distribution.  See also the chapter External Code Interface in the
+// documentation.
+
+#include "mex.h"
+
+// Every user function should include "mex.h" which imports the basic set of
+// function prototypes necessary for dynamically linked functions.  In
+// particular, it will declare mexFunction which is used by every function
+// which will be visible to Octave.  A mexFunction is visible in Octave under
+// the name of the source code file without the extension.
+
+// The four arguments to mexFunction are:
+// 1) The number of return arguments (# of left-hand side args).
+// 2) An array of pointers to return arguments.
+// 3) The number of input arguments (# of right-hand side args).
+// 4) An array of pointers to input arguments.
+
+void
+mexFunction (int nlhs, mxArray *plhs[],
+             int nrhs, const mxArray *prhs[])
+{
+  mexPrintf ("Hello, World!\n");
+
+  mexPrintf ("I have %d inputs and %d outputs\n", nrhs, nlhs);
+
+  mxArray *v = mxCreateDoubleMatrix (1, 1, mxREAL);
+  double *data = mxGetPr (v);
+  *data = 1.23456789;
+
+  plhs[0] = v;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/mycell.c	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,18 @@
+#include "mex.h"
+
+void
+mexFunction (int nlhs, mxArray* plhs[],
+             int nrhs, const mxArray* prhs[])
+{
+  mwSize n;
+  mwIndex i;
+
+  if (nrhs != 1 || ! mxIsCell (prhs[0]))
+    mexErrMsgTxt ("ARG1 must be a cell");
+
+  n = mxGetNumberOfElements (prhs[0]);
+  n = (n > nlhs ? nlhs : n);
+
+  for (i = 0; i < n; i++)
+    plhs[i] = mxDuplicateArray (mxGetCell (prhs[0], i));
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/myfeval.c	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,27 @@
+#include "mex.h"
+
+void
+mexFunction (int nlhs, mxArray* plhs[],
+             int nrhs, const mxArray* prhs[])
+{
+  char *str;
+
+  mexPrintf ("Starting file myfeval.mex\n");
+
+  mexPrintf ("I have %d inputs and %d outputs\n", nrhs, nlhs);
+
+  if (nrhs < 1 || ! mxIsString (prhs[0]))
+    mexErrMsgTxt ("ARG1 must be a function name");
+
+  str = mxArrayToString (prhs[0]);
+
+  mexPrintf ("I'm going to call the function %s\n", str);
+
+  if (nlhs == 0)
+    nlhs = 1;  // Octave's automatic 'ans' variable
+
+  /* Cast prhs just to get rid of 'const' qualifier and stop compile warning */
+  mexCallMATLAB (nlhs, plhs, nrhs-1, (mxArray**)prhs+1, str);
+
+  mxFree (str);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/myfevalf.f	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,30 @@
+      subroutine mexFunction (nlhs, plhs, nrhs, prhs)
+
+      implicit none
+
+      integer*4 nlhs, nrhs
+
+* The following will need to be integer*8 on 64-bit systems, otherwise
+* these variables won't be large enough to hold pointers...
+      integer*4 plhs(*), prhs(*)
+
+      integer*4 mxIsString, mxGetString, mxGetN, mexCallMATLAB
+      integer*4 status, len
+      character*100 str
+
+      call mexPrintf ('Hello, World!')
+
+      if (nrhs .lt. 1 .or. mxIsString (prhs(1)) .ne. 1) then
+        call mexErrMsgTxt ('function name expected')
+      endif
+
+      len = mxGetN (prhs(1))
+
+      status = mxGetString (prhs(1), str, 100)
+
+      call mexPrintf ('FORTRAN will call the interpreter now')
+
+      status = mexCallMATLAB (nlhs, plhs, nrhs-1, prhs(2), str(1:len))
+
+      return
+      end
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/myfunc.c	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,15 @@
+#include "mex.h"
+
+void
+mexFunction (int nlhs, mxArray *plhs[],
+             int nrhs, const mxArray *prhs[])
+{
+  const char *nm;
+
+  nm = mexFunctionName ();
+  mexPrintf ("You called function: %s\n", nm);
+  if (strcmp (nm, "myfunc") == 0)
+    mexPrintf ("This is the principal function\n", nm);
+
+  return;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/myhello.c	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,10 @@
+#include "mex.h"
+
+void
+mexFunction (int nlhs, mxArray *plhs[],
+             int nrhs, const mxArray *prhs[])
+{
+  mexPrintf ("Hello, World!\n");
+
+  mexPrintf ("I have %d inputs and %d outputs\n", nrhs, nlhs);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/mypow2.c	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,39 @@
+#include "mex.h"
+
+void
+mexFunction (int nlhs, mxArray* plhs[],
+             int nrhs, const mxArray* prhs[])
+{
+  mwSize n;
+  mwIndex i;
+  double *vri, *vro;
+
+  if (nrhs != 1 || ! mxIsNumeric (prhs[0]))
+    mexErrMsgTxt ("ARG1 must be a matrix");
+
+  n = mxGetNumberOfElements (prhs[0]);
+  plhs[0] = mxCreateNumericArray (mxGetNumberOfDimensions (prhs[0]),
+                                  mxGetDimensions (prhs[0]),
+                                  mxGetClassID (prhs[0]),
+                                  mxIsComplex (prhs[0]));
+  vri = mxGetPr (prhs[0]);
+  vro = mxGetPr (plhs[0]);
+
+  if (mxIsComplex (prhs[0]))
+    {
+      double *vii, *vio;
+      vii = mxGetPi (prhs[0]);
+      vio = mxGetPi (plhs[0]);
+
+      for (i = 0; i < n; i++)
+        {
+          vro[i] = vri[i] * vri[i] - vii[i] * vii[i];
+          vio[i] = 2 * vri[i] * vii[i];
+        }
+    }
+  else
+    {
+      for (i = 0; i < n; i++)
+        vro[i] = vri[i] * vri[i];
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/myprop.c	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,24 @@
+#include "mex.h"
+
+void
+mexFunction (int nlhs, mxArray* plhs[],
+             int nrhs, const mxArray* prhs[])
+{
+  double handle;
+  char property[256];
+
+  if (nrhs < 2 || nrhs > 3)
+    mexErrMsgTxt ("incorrect number of arguments");
+  if (!mxIsDouble (prhs[0]))
+    mexErrMsgTxt ("handle expected to be a double scalar");
+  if (!mxIsChar (prhs[1]))
+    mexErrMsgTxt ("expected property to be a string");
+
+  handle = mxGetScalar (prhs[0]);
+  mxGetString (prhs[1], property, 256);
+  plhs[0] = mxDuplicateArray (mexGet (handle, property));
+
+  if (nrhs == 3)
+    if (mexSet (handle, property, mxDuplicateArray (prhs[2])))
+      mexErrMsgTxt ("failed to set property");
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/myset.c	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,34 @@
+#include "mex.h"
+
+void
+mexFunction (int nlhs, mxArray* plhs[],
+             int nrhs, const mxArray* prhs[])
+{
+  char *str;
+  mxArray *v;
+
+  if (nrhs != 2 || ! mxIsString (prhs[0]))
+    mexErrMsgTxt ("expects symbol name and value");
+
+  str = mxArrayToString (prhs[0]);
+
+  v = mexGetArray (str, "global");
+
+  if (v)
+    {
+      mexPrintf ("%s is a global variable with the following value:\n", str);
+      mexCallMATLAB (0, NULL, 1, &v, "disp");
+    }
+
+  v = mexGetArray (str, "caller");
+
+  if (v)
+    {
+      mexPrintf ("%s is a caller variable with the following value:\n", str);
+      mexCallMATLAB (0, NULL, 1, &v, "disp");
+    }
+
+  // WARNING!! Can't do this in MATLAB!  Must copy variable first.
+  mxSetName (prhs[1], str);
+  mexPutArray (prhs[1], "caller");
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/mysparse.c	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,117 @@
+#include "mex.h"
+
+void
+mexFunction (int nlhs, mxArray *plhs[],
+             int nrhs, const mxArray *prhs[])
+{
+  mwSize m, n, nz;
+  mxArray *v;
+  mwIndex i;
+  double *pr, *pi;
+  double *pr2, *pi2;
+  mwIndex *ir, *jc;
+  mwIndex *ir2, *jc2;
+
+  if (nrhs != 1 || ! mxIsSparse (prhs[0]))
+    mexErrMsgTxt ("ARG1 must be a sparse matrix");
+
+  m = mxGetM (prhs[0]);
+  n = mxGetN (prhs[0]);
+  nz = mxGetNzmax (prhs[0]);
+
+  if (mxIsComplex (prhs[0]))
+    {
+      mexPrintf ("Matrix is %d-by-%d complex sparse matrix", m, n);
+      mexPrintf (" with %d elements\n", nz);
+
+      pr = mxGetPr (prhs[0]);
+      pi = mxGetPi (prhs[0]);
+      ir = mxGetIr (prhs[0]);
+      jc = mxGetJc (prhs[0]);
+
+      i = n;
+      while (jc[i] == jc[i-1] && i != 0) i--;
+
+      mexPrintf ("last nonzero element (%d, %d) = (%g, %g)\n",
+                 ir[nz-1]+ 1, i, pr[nz-1], pi[nz-1]);
+
+      v = mxCreateSparse (m, n, nz, mxCOMPLEX);
+      pr2 = mxGetPr (v);
+      pi2 = mxGetPi (v);
+      ir2 = mxGetIr (v);
+      jc2 = mxGetJc (v);
+
+      for (i = 0; i < nz; i++)
+        {
+          pr2[i] = 2 * pr[i];
+          pi2[i] = 2 * pi[i];
+          ir2[i] = ir[i];
+        }
+      for (i = 0; i < n + 1; i++)
+        jc2[i] = jc[i];
+
+      if (nlhs > 0)
+        plhs[0] = v;
+    }
+  else if (mxIsLogical (prhs[0]))
+    {
+      mxLogical *pbr, *pbr2;
+      mexPrintf ("Matrix is %d-by-%d logical sparse matrix", m, n);
+      mexPrintf (" with %d elements\n", nz);
+
+      pbr = mxGetLogicals (prhs[0]);
+      ir = mxGetIr (prhs[0]);
+      jc = mxGetJc (prhs[0]);
+
+      i = n;
+      while (jc[i] == jc[i-1] && i != 0) i--;
+      mexPrintf ("last nonzero element (%d, %d) = %d\n",
+                 ir[nz-1]+ 1, i, pbr[nz-1]);
+
+      v = mxCreateSparseLogicalMatrix (m, n, nz);
+      pbr2 = mxGetLogicals (v);
+      ir2 = mxGetIr (v);
+      jc2 = mxGetJc (v);
+
+      for (i = 0; i < nz; i++)
+        {
+          pbr2[i] = pbr[i];
+          ir2[i] = ir[i];
+        }
+      for (i = 0; i < n + 1; i++)
+        jc2[i] = jc[i];
+
+      if (nlhs > 0)
+        plhs[0] = v;
+    }
+  else
+    {
+      mexPrintf ("Matrix is %d-by-%d real sparse matrix", m, n);
+      mexPrintf (" with %d elements\n", nz);
+
+      pr = mxGetPr (prhs[0]);
+      ir = mxGetIr (prhs[0]);
+      jc = mxGetJc (prhs[0]);
+
+      i = n;
+      while (jc[i] == jc[i-1] && i != 0) i--;
+      mexPrintf ("last nonzero element (%d, %d) = %g\n",
+                 ir[nz-1]+ 1, i, pr[nz-1]);
+
+      v = mxCreateSparse (m, n, nz, mxREAL);
+      pr2 = mxGetPr (v);
+      ir2 = mxGetIr (v);
+      jc2 = mxGetJc (v);
+
+      for (i = 0; i < nz; i++)
+        {
+          pr2[i] = 2 * pr[i];
+          ir2[i] = ir[i];
+        }
+      for (i = 0; i < n + 1; i++)
+        jc2[i] = jc[i];
+
+      if (nlhs > 0)
+        plhs[0] = v;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/mystring.c	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,25 @@
+#include <string.h>
+#include "mex.h"
+
+void
+mexFunction (int nlhs, mxArray *plhs[],
+             int nrhs, const mxArray *prhs[])
+{
+  mwSize m, n;
+  mwIndex i, j;
+  mxChar *pi, *po;
+
+  if (nrhs != 1 || ! mxIsChar (prhs[0])
+      || mxGetNumberOfDimensions (prhs[0]) > 2)
+    mexErrMsgTxt ("ARG1 must be a char matrix");
+
+  m = mxGetM (prhs[0]);
+  n = mxGetN (prhs[0]);
+  pi = mxGetChars (prhs[0]);
+  plhs[0] = mxCreateNumericMatrix (m, n, mxCHAR_CLASS, mxREAL);
+  po = mxGetChars (plhs[0]);
+
+  for (j = 0; j < n; j++)
+    for (i = 0; i < m; i++)
+      po[j*m + m - 1 - i] = pi[j*m + i];
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/mystruct.c	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,36 @@
+#include "mex.h"
+
+void
+mexFunction (int nlhs, mxArray* plhs[],
+             int nrhs, const mxArray* prhs[])
+{
+  int i;
+  mwIndex j;
+  mxArray *v;
+  const char *keys[] = { "this", "that" };
+
+  if (nrhs != 1 || ! mxIsStruct (prhs[0]))
+    mexErrMsgTxt ("expects struct");
+
+  for (i = 0; i < mxGetNumberOfFields (prhs[0]); i++)
+    for (j = 0; j < mxGetNumberOfElements (prhs[0]); j++)
+      {
+        mexPrintf ("field %s(%d) = ", mxGetFieldNameByNumber (prhs[0], i), j);
+        v = mxGetFieldByNumber (prhs[0], j, i);
+        mexCallMATLAB (0, NULL, 1, &v, "disp");
+      }
+
+  v = mxCreateStructMatrix (2, 2, 2, keys);
+
+  mxSetFieldByNumber (v, 0, 0, mxCreateString ("this1"));
+  mxSetFieldByNumber (v, 0, 1, mxCreateString ("that1"));
+  mxSetFieldByNumber (v, 1, 0, mxCreateString ("this2"));
+  mxSetFieldByNumber (v, 1, 1, mxCreateString ("that2"));
+  mxSetFieldByNumber (v, 2, 0, mxCreateString ("this3"));
+  mxSetFieldByNumber (v, 2, 1, mxCreateString ("that3"));
+  mxSetFieldByNumber (v, 3, 0, mxCreateString ("this4"));
+  mxSetFieldByNumber (v, 3, 1, mxCreateString ("that4"));
+
+  if (nlhs)
+    plhs[0] = v;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/oct_demo.cc	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,84 @@
+// oct_demo.cc -- example of a dynamically linked function for Octave.
+
+// To use this file, your version of Octave must support dynamic
+// linking.  To find out if it does, type the command
+//
+//   octave_config_info ("ENABLE_DYNAMIC_LINKING")
+//
+// at the Octave prompt.  Support for dynamic linking is included if
+// this expression returns the string "yes".
+//
+// To compile this file, type the command
+//
+//   mkoctfile oct_demo.cc
+//
+// from within Octave or from the shell prompt.  This will create a file
+// called oct_demo.oct that can be loaded by Octave.  To test the
+// oct_demo.oct file, start Octave and type the command
+//
+//   oct_demo ("easy as", 1, 2, 3)
+//
+// at the Octave prompt.  Octave should respond by printing
+//
+//   Hello, world!
+//   easy as
+//   1
+//   2
+//   3
+//   ans = 3
+
+// Additional samples of real dynamically loaded functions are available in
+// the files of the libinterp/dldfcn directory of the Octave distribution.
+// See also the chapter External Code Interface in the documentation.
+
+#include <iostream>
+
+#include <octave/oct.h>
+
+// Every user function should include <octave/oct.h> which imports the
+// basic set of Octave header files required.  In particular this will define
+// the DEFUN_DLD macro (defun-dld.h) which is used for every user function
+// that is visible to Octave.
+
+// The four arguments to the DEFUN_DLD macro are:
+// 1) The function name as seen in Octave.
+// 2) The variable to hold any inputs (of type octave_value_list)
+// 3) The number of output arguments
+// 4) A string to use as help text if 'help <function_name>' is entered.
+//
+// Note below that the third parameter (nargout) of DEFUN_DLD is not used,
+// so it is omitted from the list of arguments in order to avoid a warning
+// from gcc about an unused function parameter.
+
+DEFUN_DLD (oct_demo, args, ,
+           "[...] = oct_demo (...)\n\
+\n\
+Print a greeting followed by the values of all the arguments passed.\n\
+Return all arguments in reverse order.")
+{
+  // The list of values to return.  See the declaration in oct-obj.h
+
+  octave_value_list retval;
+
+  // This stream is normally connected to the pager.
+
+  octave_stdout << "Hello, world!\n";
+
+  // The inputs to this function are available in args.
+
+  int nargin = args.length ();
+
+  // The octave_value_list class is a zero-based array of octave_value objects.
+  // The declaration for the octave_value class is in the file ov.h.
+  // The print() method will send its output to octave_stdout,
+  // so it will also end up going through the pager.
+
+  for (int i = 0; i < nargin; i++)
+    {
+      octave_value tmp = args(i);
+      tmp.print (octave_stdout);
+      retval(nargin-i-1) = tmp;
+    }
+
+  return retval;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/oregonator.cc	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,22 @@
+#include <octave/oct.h>
+
+DEFUN_DLD (oregonator, args, ,
+           "The `oregonator'.\n\
+\n\
+Reference:\n\
+\n\
+  Oscillations in chemical systems.  IV.  Limit cycle behavior in a\n\
+  model of a real chemical reaction. Richard J. Field and Richard\n\
+  M. Noyes, The Journal of Chemical Physics, Volume 60 Number 5,\n\
+  March 1974.")
+{
+  ColumnVector dx (3);
+
+  ColumnVector x (args(0).vector_value ());
+
+  dx(0) = 77.27 * (x(1) - x(0)*x(1) + x(0) - 8.375e-06*pow (x(0), 2.0));
+  dx(1) = (x(2) - x(0)*x(1) - x(1)) / 77.27;
+  dx(2) = 0.161*(x(0) - x(2));
+
+  return octave_value (dx);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/oregonator.m	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,18 @@
+## The `oregonator'.
+##
+## Reference:
+##
+##   Oscillations in chemical systems.  IV.  Limit cycle behavior in a
+##   model of a real chemical reaction. Richard J. Field and Richard
+##   M. Noyes, The Journal of Chemical Physics, Volume 60 Number 5,
+##   March 1974.
+
+function dx = oregonator (x, t)
+
+  dx = zeros (3, 1);
+
+  dx(1) = 77.27*(x(2) - x(1)*x(2) + x(1) - 8.375e-06*x(1)^2);
+  dx(2) = (x(3) - x(1)*x(2) - x(2)) / 77.27;
+  dx(3) = 0.161*(x(1) - x(3));
+
+end
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/paramdemo.cc	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,30 @@
+#include <octave/oct.h>
+
+DEFUN_DLD (paramdemo, args, nargout, "Parameter Check Demo")
+{
+  octave_value retval;
+  int nargin = args.length ();
+
+  if (nargin != 1)
+    print_usage ();
+  else if (nargout != 0)
+    error ("paramdemo: OUTPUT argument required");
+  else
+    {
+      NDArray m = args(0).array_value ();
+      double min_val = -10.0;
+      double max_val = 10.0;
+      octave_stdout << "Properties of input array:\n";
+      if (m.any_element_is_negative ())
+        octave_stdout << "  includes negative values\n";
+      if (m.any_element_is_inf_or_nan ())
+        octave_stdout << "  includes Inf or NaN values\n";
+      if (m.any_element_not_one_or_zero ())
+        octave_stdout << "  includes other values than 1 and 0\n";
+      if (m.all_elements_are_int_or_inf_or_nan ())
+        octave_stdout << "  includes only int, Inf or NaN values\n";
+      if (m.all_integers (min_val, max_val))
+        octave_stdout << "  includes only integers in [-10,10]\n";
+    }
+  return retval;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/standalone.cc	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,19 @@
+#include <iostream>
+#include <octave/oct.h>
+
+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;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/standalonebuiltin.cc	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,28 @@
+#include <iostream>
+#include <octave/oct.h>
+#include <octave/builtin-defun-decls.h>
+
+int
+main (void)
+{
+  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 << "This is a matrix:" << std::endl 
+            << a_matrix            << std::endl;
+
+  octave_value_list in;
+  in(0) = a_matrix;
+
+  octave_value_list out = Fnorm (in, 1);
+  double norm_of_the_matrix = out(0).double_value ();
+
+  std::cout << "This is the norm of the matrix:" << std::endl 
+            << norm_of_the_matrix                << std::endl;
+  
+  return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/stringdemo.cc	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,29 @@
+#include <octave/oct.h>
+
+DEFUN_DLD (stringdemo, args, , "String Demo")
+{
+  octave_value_list retval;
+  int nargin = args.length ();
+
+  if (nargin != 1)
+    print_usage ();
+  else
+    {
+      charMatrix ch = args(0).char_matrix_value ();
+
+      if (! error_state)
+        {
+          retval(1) = octave_value (ch, '\'');  // Single Quote String
+
+          octave_idx_type nr = ch.rows ();
+          for (octave_idx_type i = 0; i < nr / 2; i++)
+            {
+              std::string tmp = ch.row_as_string (i);
+              ch.insert (ch.row_as_string (nr-i-1).c_str (), i, 0);
+              ch.insert (tmp.c_str (), nr-i-1, 0);
+            }
+          retval(0) = octave_value (ch, '"');  // Double Quote String
+        }
+    }
+  return retval;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/structdemo.cc	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,45 @@
+#include <octave/oct.h>
+#include <octave/ov-struct.h>
+
+DEFUN_DLD (structdemo, args, , "Struct Demo")
+{
+  octave_value retval;
+  int nargin = args.length ();
+
+  if (args.length () == 2)
+    {
+      octave_scalar_map arg0 = args(0).scalar_map_value ();
+      //octave_map arg0 = args(0).map_value ();
+
+      if (! error_state)
+        {
+          std::string arg1 = args(1).string_value ();
+
+          if (! error_state)
+            {
+              octave_value tmp = arg0.contents (arg1);
+              //octave_value tmp = arg0.contents (arg1)(0);
+
+              if (tmp.is_defined ())
+                {
+                  octave_scalar_map st;
+
+                  st.assign ("selected", tmp);
+
+                  retval = octave_value (st);
+                }
+              else
+                error ("structdemo: struct does not have a field named '%s'\n",
+                       arg1.c_str ());
+            }
+          else
+            error ("structdemo: ARG2 must be a character string");
+        }
+      else
+        error ("structdemo: ARG1 must be a struct");
+    }
+  else
+    print_usage ();
+
+  return retval;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/code/unwinddemo.cc	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,34 @@
+#include <octave/oct.h>
+#include <octave/unwind-prot.h>
+
+void
+my_err_handler (const char *fmt, ...)
+{
+  // Do nothing!!
+}
+
+DEFUN_DLD (unwinddemo, args, nargout, "Unwind Demo")
+{
+  octave_value retval;
+  int nargin = args.length ();
+
+  if (nargin < 2)
+    print_usage ();
+  else
+    {
+      NDArray a = args(0).array_value ();
+      NDArray b = args(1).array_value ();
+
+      if (! error_state)
+        {
+          // Declare unwind_protect frame which lasts as long as
+          // the variable frame has scope.
+          unwind_protect frame;
+          frame.protect_var (current_liboctave_warning_handler);
+
+          set_liboctave_warning_handler (my_err_handler);
+          retval = octave_value (quotient (a, b));
+        }
+    }
+  return retval;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/data/Makefile.am	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,29 @@
+# Makefile for Octave's examples/data directory
+#
+# Copyright (C) 2012-2013 John W. Eaton
+#
+# 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
+# <http://www.gnu.org/licenses/>.
+
+include $(top_srcdir)/build-aux/common.mk
+
+DATA_FILES = \
+   penny.mat
+
+octdata_DATA = $(DATA_FILES)
+
+EXTRA_DIST = $(DATA_FILES)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/data/penny.mat	Tue Aug 19 14:32:44 2014 -0700
@@ -0,0 +1,135 @@
+# Created by Octave 3.8.1, Sun Jun 01 16:28:53 2014 CEST <weber@t61>
+# name: P
+# type: matrix
+# rows: 128
+# columns: 128
+ 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 18 43 68 89 107 120 135 149 162 172 180 192 196 203 207 211 210 212 213 214 212 210 209 204 201 194 183 177 163 148 130 116 98 81 60 35 6 4 3 3 3 3 3 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
+ 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 6 33 63 90 111 132 152 172 190 199 209 215 219 222 224 225 226 228 228 229 228 229 230 228 229 230 229 228 227 226 225 221 216 216 207 197 189 171 151 128 107 81 52 21 4 3 3 3 2 3 3 3 2 2 2 2 3 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
+ 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 9 44 78 104 130 159 183 200 214 222 225 227 230 230 233 235 235 235 235 235 235 235 235 234 233 233 234 234 233 233 232 232 232 231 232 231 230 228 227 226 223 220 213 203 183 157 130 100 70 34 5 3 3 3 3 2 3 2 3 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
+ 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 2 2 2 2 2 2 2 2 1 2 2 2 2 2 27 64 99 129 160 186 206 218 226 229 231 234 235 236 236 235 235 232 229 226 221 219 218 216 216 214 214 215 216 218 220 221 223 226 228 229 230 231 231 231 230 230 229 228 227 226 222 218 209 188 159 128 96 58 15 4 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
+ 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 35 75 110 140 174 202 217 227 232 234 235 236 236 234 228 221 214 208 203 199 196 195 193 192 190 190 189 188 188 189 190 191 191 193 192 193 194 197 201 206 213 218 223 227 229 230 230 229 227 226 226 223 220 213 196 164 127 91 49 5 4 3 3 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 2
+ 2 2 2 2 2 2 2 2 2 2 2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 10 52 92 129 164 196 217 226 232 235 236 237 234 224 214 205 198 193 191 187 186 187 183 183 182 181 179 178 178 181 179 179 179 179 180 180 180 179 178 179 180 182 184 186 190 195 200 209 217 223 227 228 229 228 227 225 224 222 217 204 173 135 96 52 5 3 3 3 3 3 2 3 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
+ 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 2 2 2 2 2 1 8 52 93 131 165 200 221 229 234 236 237 234 225 212 201 193 188 185 183 180 178 176 175 174 173 173 182 174 171 177 180 170 175 184 170 169 176 180 179 177 172 169 169 171 174 176 178 179 182 185 188 194 203 212 221 226 228 227 227 226 224 223 219 208 184 144 103 54 5 3 3 3 3 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2
+ 2 2 2 2 2 2 2 2 2 1 2 1 2 2 2 2 2 2 2 2 1 2 2 2 2 2 2 1 13 49 90 131 167 203 222 230 232 235 236 225 214 202 194 189 186 181 178 175 172 170 168 167 167 164 163 164 188 177 163 185 188 163 176 175 159 159 172 182 175 170 161 159 159 161 163 166 168 170 171 173 176 178 182 185 193 202 213 221 225 227 226 225 224 223 220 211 188 145 101 48 5 3 3 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
+ 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 4 45 88 128 166 201 222 231 234 234 232 219 204 193 189 186 183 179 175 171 167 164 163 160 158 156 155 155 154 154 171 178 158 184 185 160 175 159 148 148 165 170 153 150 147 148 150 151 153 156 157 159 161 163 165 169 173 175 177 180 185 192 204 216 223 225 226 224 224 223 221 212 188 141 91 34 4 3 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2
+ 2 2 2 2 2 2 2 2 2 2 2 1 2 2 2 1 2 2 2 2 2 2 1 2 3 41 82 125 163 199 220 228 229 235 229 216 201 191 185 181 180 180 184 186 174 163 158 155 152 150 148 145 145 144 144 145 154 173 159 174 174 169 168 142 136 137 159 166 161 141 138 138 141 142 144 146 148 149 151 154 157 160 170 170 169 172 174 176 179 186 198 210 222 226 225 224 224 222 220 212 181 130 80 15 3 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
+ 2 2 2 2 1 2 2 2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 2 20 71 114 154 194 220 230 230 235 231 215 200 193 187 180 177 173 181 198 188 183 188 162 150 146 143 141 139 136 135 135 135 135 138 162 167 159 156 166 155 129 126 127 151 143 137 129 129 130 132 133 136 137 140 141 144 145 148 151 165 177 183 174 167 168 170 173 176 182 195 211 222 225 225 223 222 221 219 206 166 114 53 4 3 2 3 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
+ 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 2 2 2 33 85 132 172 211 231 236 233 233 220 206 196 191 184 179 174 169 165 164 188 174 156 162 176 146 139 135 132 130 128 126 125 125 125 125 139 156 146 130 154 147 119 116 117 139 139 122 122 120 121 122 126 127 128 130 132 135 137 139 141 146 150 173 177 176 173 162 163 167 171 175 181 193 208 220 224 223 223 222 220 217 197 159 102 36 4 3 2 3 2 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2
+ 2 2 2 2 2 2 2 2 2 2 2 2 1 2 2 2 2 2 2 2 14 72 124 166 210 235 244 239 235 221 203 195 191 187 187 181 169 162 158 156 154 174 166 143 145 166 136 129 126 122 120 118 116 115 114 114 115 127 139 118 114 133 118 106 106 110 134 136 135 128 114 114 115 117 118 120 122 124 127 128 131 134 138 145 165 147 150 153 153 155 159 163 169 173 176 183 198 214 222 224 223 222 220 219 209 177 118 53 4 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
+ 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 2 2 2 38 96 144 187 227 246 247 240 228 207 198 191 186 186 200 195 194 180 156 151 147 144 158 166 137 136 155 129 120 116 113 111 109 106 105 104 104 104 106 109 101 100 102 99 97 97 99 105 109 112 110 105 105 107 108 110 112 114 116 119 120 124 126 131 148 151 138 140 142 146 148 151 166 175 168 169 172 175 185 202 217 223 223 222 220 219 218 201 142 79 4 3 3 3 3 2 2 2 2 2 2 3 2 2 2 2 2 2 2
+ 2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 56 114 161 204 242 249 245 236 216 203 195 188 182 178 192 187 168 170 182 157 143 138 136 140 160 137 134 143 117 111 108 105 102 98 98 96 95 93 93 92 92 90 89 89 88 88 87 89 89 91 91 94 95 98 98 100 102 105 106 108 111 113 115 118 123 146 133 130 132 135 138 141 147 174 179 183 172 164 167 171 176 193 210 221 223 223 221 220 220 212 164 102 27 4 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2
+ 2 2 2 2 2 2 2 1 2 2 2 2 2 2 2 2 2 67 126 172 217 248 248 245 228 210 201 193 186 181 174 171 193 173 156 150 163 164 135 130 126 126 149 148 141 120 107 102 99 96 94 91 89 87 87 85 83 82 82 82 82 82 82 80 81 81 82 82 82 84 87 89 91 93 94 97 99 101 103 105 107 112 122 137 121 122 125 128 131 135 147 168 154 161 179 160 159 163 166 172 180 201 216 222 222 222 218 219 216 182 121 52 4 3 3 2 2 2 3 2 2 2 2 2 2 2 2 2
+ 2 2 1 2 2 2 2 2 2 2 2 1 2 2 2 7 83 137 185 230 249 247 238 217 204 198 193 187 179 172 166 162 182 173 148 142 146 163 128 122 117 116 126 126 111 100 96 93 91 88 86 83 81 79 78 76 75 76 78 80 85 89 89 81 78 76 76 76 77 78 80 81 83 85 87 89 91 92 95 97 100 104 116 118 113 115 118 121 125 131 156 163 143 147 170 153 153 156 159 164 168 175 192 211 221 223 222 220 219 219 189 133 65 4 3 2 2 3 2 2 2 2 2 2 2 2 2 2
+ 2 2 2 2 2 2 2 2 2 2 2 2 2 2 20 91 147 197 240 248 248 232 209 200 196 193 198 196 175 165 158 154 163 172 142 135 139 155 121 113 110 106 103 99 93 90 86 84 82 80 78 75 73 72 73 72 72 86 90 93 97 100 100 93 95 93 93 91 83 78 81 85 82 80 81 82 84 86 88 90 93 95 99 102 104 107 110 114 120 130 150 154 162 162 152 143 144 149 153 158 162 165 172 184 205 219 223 222 220 219 220 205 151 80 4 3 3 3 3 3 3 2 3 3 2 2 2 2
+ 2 1 2 2 2 2 1 2 2 2 2 2 2 3 80 141 192 233 249 250 232 210 200 194 190 198 197 183 170 159 153 148 143 153 160 140 143 145 115 106 102 97 93 89 85 81 78 75 74 72 71 68 69 72 83 90 91 95 97 94 101 106 111 108 103 98 97 104 107 108 104 99 98 89 75 76 77 78 80 82 85 88 91 94 96 99 102 106 112 128 138 127 141 153 134 134 138 142 146 151 170 162 163 168 175 193 213 222 222 221 219 219 220 180 111 30 3 3 2 3 2 2 2 1 2 2 2 2
+ 2 1 2 1 2 2 2 1 2 2 2 2 35 97 156 207 245 251 246 220 205 196 190 184 190 196 170 163 158 157 145 139 133 132 142 143 133 112 101 96 91 88 84 78 77 72 69 68 65 66 66 68 83 89 93 101 106 111 114 115 114 116 122 119 111 107 115 121 122 114 107 102 101 98 82 71 72 72 74 76 79 81 84 87 90 93 96 101 107 119 116 118 138 141 126 129 133 137 142 162 167 155 158 163 167 175 193 214 222 222 221 219 219 219 169 97 9 3 2 3 2 2 2 2 2 2 2 2
+ 2 2 2 2 2 1 2 1 2 2 1 31 102 158 210 247 253 243 217 205 196 188 181 176 188 189 161 155 168 176 142 132 125 120 117 113 106 99 93 88 83 80 76 72 69 65 62 60 61 70 85 88 88 90 101 114 121 126 131 133 131 131 137 132 131 136 135 135 130 125 121 118 114 105 96 90 76 69 70 72 73 76 77 82 84 87 90 93 99 103 106 111 131 134 120 125 127 132 143 161 148 148 153 158 163 166 172 189 212 221 221 220 219 221 219 171 96 8 3 3 2 2 2 2 2 2 2 2
+ 1 1 2 2 1 2 2 2 2 2 6 81 143 197 241 253 247 222 206 197 190 182 175 169 168 187 162 150 154 166 163 130 120 114 109 105 98 92 87 82 78 72 69 65 62 59 57 57 65 88 96 100 101 103 110 122 134 140 144 147 146 148 150 146 145 144 142 139 134 131 133 133 131 120 108 107 102 92 80 78 74 72 74 75 78 81 83 87 91 95 98 102 110 119 115 116 120 126 148 150 137 141 146 166 168 159 164 169 181 205 219 222 221 220 218 221 187 112 16 3 3 2 2 2 2 2 2 2
+ 1 2 2 2 2 2 2 2 2 2 80 140 194 241 254 244 220 205 197 190 183 175 168 163 158 169 173 148 142 152 148 123 112 106 102 96 92 86 81 76 70 67 63 60 56 53 55 68 86 91 97 106 111 114 118 128 146 153 154 153 157 156 153 149 147 146 141 135 129 130 142 144 145 138 125 118 117 124 124 117 108 94 79 71 73 75 78 82 85 89 92 97 100 103 108 111 115 126 148 134 131 135 148 166 151 152 157 162 168 179 204 220 222 221 220 218 222 182 105 11 3 2 2 2 2 2 2 2
+ 2 2 2 2 2 2 2 1 1 66 135 189 237 253 248 220 205 198 190 183 175 168 162 157 151 150 158 160 156 147 126 113 106 101 96 90 85 80 75 71 64 60 57 54 51 51 71 79 90 94 110 118 124 131 138 143 155 162 161 156 161 161 155 146 143 139 135 129 127 136 150 151 149 140 129 127 131 139 136 131 118 98 85 74 70 70 73 76 79 82 86 90 94 98 102 106 109 125 141 124 126 134 157 146 142 148 152 157 163 169 182 204 220 222 220 219 217 223 175 93 4 3 2 2 3 3 2 2
+ 2 1 2 1 1 2 2 1 54 125 182 235 252 249 224 206 198 191 185 176 169 161 155 150 145 140 137 134 131 120 110 104 99 95 89 84 79 75 70 64 59 54 52 49 56 76 89 97 101 114 124 133 147 154 152 152 165 168 168 163 165 165 157 140 130 130 129 129 135 149 153 153 151 137 127 133 139 148 151 142 122 108 94 87 69 66 69 71 74 77 81 85 88 92 95 100 104 115 136 124 128 148 140 133 137 141 146 152 158 165 171 182 205 220 222 220 219 219 223 170 88 4 3 3 2 2 2 2
+ 2 2 1 1 2 2 1 58 128 186 235 252 244 219 205 197 195 187 176 168 161 154 148 143 137 132 126 121 113 108 103 98 93 86 81 76 73 67 61 57 53 51 53 70 95 108 114 120 127 138 148 160 167 164 162 169 175 176 173 173 169 168 156 139 131 132 136 142 146 149 151 155 147 134 138 146 150 158 157 145 131 115 99 89 84 70 65 68 70 74 76 80 84 87 91 94 99 105 122 133 135 126 123 128 133 137 144 157 172 168 169 174 188 211 221 221 220 218 226 214 142 45 3 3 2 2 3 3
+ 1 2 2 2 2 2 43 114 173 225 248 245 220 207 198 192 200 202 172 164 155 148 142 136 131 125 120 113 107 101 97 91 86 79 74 69 66 60 57 53 55 73 95 112 126 132 135 142 149 160 169 177 179 178 179 181 181 181 180 178 176 170 163 144 136 134 137 141 145 144 151 156 149 148 150 153 159 160 159 154 146 131 114 101 89 83 64 62 65 68 71 74 78 81 85 88 92 96 101 107 111 114 117 121 127 132 140 171 170 181 169 168 174 187 212 221 221 219 219 228 208 129 30 3 3 2 2 2
+ 2 2 2 1 2 23 96 161 217 245 245 225 209 202 194 189 182 193 190 161 150 143 137 131 125 119 113 106 101 96 91 85 79 74 68 64 60 56 53 53 68 86 111 131 141 145 148 155 165 176 181 185 187 186 185 186 185 185 184 183 178 169 165 148 136 133 134 141 147 148 152 155 146 143 143 149 159 158 156 158 152 143 121 107 96 83 63 59 60 63 67 69 72 76 79 82 86 90 94 98 103 107 113 118 122 128 137 166 149 162 170 162 167 173 191 214 221 221 219 218 227 197 109 4 3 3 2 3
+ 2 2 2 1 2 64 130 189 235 248 236 214 205 198 195 187 179 173 186 184 151 141 133 126 121 116 109 103 98 93 87 81 75 69 64 60 56 53 50 59 73 90 113 139 146 150 151 153 171 180 183 188 188 187 188 189 189 187 185 184 177 168 165 156 143 142 142 142 151 149 145 150 138 133 136 146 151 151 154 154 151 146 139 111 91 85 69 55 56 58 61 63 66 69 73 76 79 84 88 91 96 100 106 111 125 132 128 156 153 144 150 154 159 164 171 190 213 222 221 220 218 229 198 113 4 2 3 3
+ 2 2 2 2 60 128 188 235 249 234 213 204 198 211 216 208 195 184 182 181 160 135 125 120 115 108 102 97 91 86 80 74 69 63 58 55 52 51 58 77 92 109 134 146 152 156 153 172 179 181 186 191 186 184 189 191 191 190 190 185 179 178 171 155 150 150 150 153 154 147 151 148 141 140 141 144 143 142 142 139 131 128 122 98 83 75 61 51 52 54 56 61 62 66 69 72 76 79 82 87 91 96 102 108 131 132 125 156 147 138 143 149 154 160 168 175 200 220 222 220 218 225 227 159 62 4 2 3
+ 1 2 2 35 108 172 224 248 240 216 208 199 192 191 205 200 184 174 168 163 148 127 120 114 108 103 97 92 87 80 75 70 64 60 55 51 50 63 81 92 107 125 143 152 160 163 169 182 180 180 187 192 188 186 188 191 194 194 193 192 190 187 176 162 157 157 159 160 158 154 156 155 152 147 148 146 142 136 130 126 118 110 106 90 75 68 53 45 48 50 52 55 58 61 64 67 71 74 77 82 86 91 96 102 117 137 137 151 138 133 139 144 150 156 163 170 180 207 220 222 220 218 231 216 134 24 3 3
+ 2 2 2 67 138 197 236 249 226 214 205 197 188 181 177 189 186 157 146 138 130 121 116 110 104 99 93 88 82 77 72 66 61 57 53 48 49 73 90 103 119 133 151 159 166 175 180 187 183 177 182 190 192 189 186 191 194 195 195 194 192 189 184 173 165 163 164 167 165 161 162 162 154 156 157 157 153 145 134 122 114 105 91 76 66 60 45 41 43 45 48 51 53 56 58 62 65 68 72 76 80 85 90 94 101 113 128 132 125 127 132 138 144 153 169 163 170 180 207 222 222 220 219 231 211 129 15 3
+ 2 2 43 116 179 232 251 233 216 207 205 203 183 175 169 164 175 168 139 130 122 114 108 104 98 92 88 82 77 72 67 62 57 52 48 45 53 85 103 114 127 141 158 172 178 186 190 192 188 179 178 184 192 193 190 190 191 193 194 193 193 189 185 179 174 174 173 173 173 170 166 164 167 167 166 166 164 159 148 133 118 100 72 58 54 41 35 36 38 41 43 47 49 52 55 57 60 64 68 71 75 78 84 89 94 100 106 112 116 121 127 133 140 153 181 172 166 172 186 214 222 221 219 217 233 190 97 3
+ 2 12 89 159 217 251 243 220 209 201 202 210 192 171 163 155 150 152 135 122 115 108 102 98 92 87 82 77 72 67 63 57 53 47 44 43 67 94 108 119 134 142 161 177 185 190 194 195 192 185 180 182 193 194 190 187 187 191 191 194 195 193 188 184 183 182 181 180 179 173 175 176 175 174 173 172 172 170 163 149 130 106 73 50 34 31 30 32 35 37 40 42 44 48 51 54 56 60 63 66 70 74 80 84 89 94 100 106 110 116 122 128 135 144 169 187 166 168 176 195 218 222 221 219 224 230 157 49
+ 2 81 152 210 249 246 222 210 201 193 187 191 195 173 154 146 138 131 122 114 106 101 95 90 85 79 75 71 65 61 56 51 47 43 40 56 82 103 114 133 139 150 166 180 186 189 194 195 192 184 181 193 196 194 190 188 189 191 193 195 191 186 188 189 187 187 185 183 183 183 183 181 181 181 180 178 179 178 172 160 140 114 81 36 26 26 26 29 31 33 36 39 41 44 47 50 52 55 60 63 67 71 75 80 85 90 96 102 108 114 121 126 134 153 174 182 181 166 172 182 211 222 221 220 218 233 190 91
+ 53 126 188 244 247 228 215 205 195 188 180 174 178 181 159 140 131 123 115 108 100 95 89 84 79 74 70 65 60 56 51 47 42 37 37 63 86 109 122 138 146 157 167 179 187 191 192 188 186 189 191 197 197 194 192 189 189 194 195 191 183 185 189 188 189 188 188 186 186 185 186 186 185 186 184 183 183 181 178 172 156 134 102 51 23 24 24 26 28 30 33 34 37 40 43 46 49 51 55 59 62 66 71 75 80 86 91 97 103 109 117 124 147 160 155 161 178 171 167 174 193 217 223 221 220 224 229 150
+ 98 167 227 247 239 221 209 199 189 181 173 167 160 162 160 137 125 117 109 102 95 89 83 78 73 69 65 59 54 51 47 42 37 33 36 67 88 116 131 141 156 164 169 180 187 191 190 180 174 186 196 198 197 196 195 193 190 192 192 185 180 185 191 192 191 190 189 189 188 189 189 189 190 190 188 186 186 184 182 176 165 147 122 79 24 20 21 23 25 26 28 29 34 35 38 41 44 47 51 55 57 62 66 70 76 81 87 93 99 106 117 141 148 138 136 142 152 156 162 168 177 201 221 222 221 220 232 205
+ 141 204 247 249 226 214 203 194 184 175 167 160 153 146 139 127 118 110 103 96 89 84 78 72 68 64 59 55 50 45 41 38 33 30 34 69 91 122 136 147 161 167 170 179 183 188 189 180 173 180 196 196 193 190 188 189 186 186 185 180 180 185 188 190 191 192 191 191 190 190 190 191 192 192 190 190 188 186 183 179 169 154 134 102 43 18 18 19 22 23 24 27 28 32 35 37 41 44 47 49 54 57 62 66 71 77 83 88 94 102 115 128 124 125 130 136 143 149 157 164 172 185 213 221 222 220 218 231
+ 163 224 250 242 222 211 200 191 181 172 163 156 149 141 132 123 114 107 99 92 85 79 74 68 64 59 55 51 46 41 38 33 30 28 34 67 92 118 137 148 159 165 169 178 183 185 188 186 183 183 192 190 184 181 182 179 175 177 180 178 180 182 182 187 191 191 190 191 190 190 191 191 192 192 192 192 191 189 186 180 173 161 145 122 82 23 16 18 18 20 20 22 24 27 30 33 35 38 43 45 49 52 56 61 66 71 77 81 88 95 102 110 114 119 124 131 136 143 150 157 166 175 190 216 223 221 220 224
+ 211 252 245 224 213 202 192 182 174 165 156 149 140 132 123 115 107 99 92 85 78 73 68 63 58 54 50 44 40 36 32 29 25 25 50 76 103 123 139 151 158 165 175 179 180 186 187 187 188 187 183 180 178 176 173 171 172 175 173 174 180 180 183 187 190 189 189 189 190 189 190 191 192 192 192 193 192 189 185 178 168 158 142 119 83 23 14 14 15 17 17 19 22 24 27 30 33 36 39 41 45 49 54 59 62 68 73 79 85 91 99 105 111 117 122 128 134 141 147 155 164 172 182 208 222 222 221 218
+ 242 255 231 218 207 196 187 177 169 160 152 143 135 126 117 109 101 94 87 81 74 69 63 58 54 47 44 39 36 31 28 26 22 22 51 76 100 121 133 148 157 165 175 177 179 185 187 188 189 184 176 174 174 172 171 175 176 173 168 171 179 184 185 187 189 189 189 189 188 187 188 190 190 191 191 192 192 188 184 178 168 157 143 122 91 31 13 12 13 14 15 16 18 21 24 27 30 32 36 39 42 47 51 55 60 64 69 75 81 87 94 101 106 112 118 125 130 137 144 151 159 167 176 192 218 223 221 220
+ 250 251 227 214 204 194 183 175 165 156 148 140 131 122 113 105 97 90 83 77 71 65 59 54 48 45 40 36 31 29 26 22 20 20 33 70 91 112 128 143 156 163 172 177 179 183 185 181 183 183 181 173 171 173 179 183 180 173 172 175 178 182 188 187 189 189 189 188 185 184 185 186 187 189 190 191 190 188 185 179 169 159 147 132 107 57 13 10 10 11 12 14 15 17 20 22 25 28 32 35 38 42 45 50 54 59 64 70 76 82 88 94 102 107 113 119 125 131 138 145 153 161 169 178 198 220 223 221
+ 255 231 218 205 196 185 177 167 158 150 140 132 123 114 106 98 90 84 77 71 64 59 53 49 43 38 34 31 27 25 21 18 16 16 32 73 97 114 132 149 158 164 170 176 178 180 180 176 176 181 182 180 177 184 187 187 179 176 177 181 184 182 187 187 186 187 187 184 181 180 182 183 185 187 188 189 188 187 183 177 168 157 148 133 104 48 10 9 8 9 10 11 12 15 17 20 23 26 29 33 36 40 44 47 52 57 61 67 73 79 85 92 99 106 111 117 123 129 136 143 151 158 166 176 190 218 224 222
+ 245 224 211 201 191 181 172 162 153 144 136 126 117 108 100 93 85 78 73 66 59 54 49 45 39 34 30 27 24 21 18 16 14 13 28 65 94 116 134 149 157 160 167 176 178 177 175 174 173 174 174 178 183 188 186 183 177 173 172 180 185 184 183 183 181 184 184 182 179 176 177 180 181 182 184 186 187 186 182 177 170 162 152 138 112 62 10 8 7 7 8 8 10 12 15 17 20 23 27 30 33 37 41 45 49 53 58 63 69 76 81 87 94 101 107 113 119 125 132 139 147 154 163 171 181 206 223 223
+ 231 218 207 196 185 176 167 157 149 139 131 121 112 103 96 88 80 74 68 62 55 50 45 40 35 30 27 23 21 18 15 13 11 11 29 60 82 111 133 148 157 162 164 176 179 175 169 170 169 171 174 178 184 185 177 171 168 166 170 177 181 181 177 179 178 179 180 179 174 170 171 174 175 177 181 183 183 183 181 179 175 166 158 145 121 75 14 6 5 5 5 6 7 9 13 14 18 20 24 27 31 34 38 41 46 50 55 61 66 72 77 84 90 97 103 109 116 122 129 135 143 150 158 167 176 191 219 224
+ 224 212 201 191 181 172 162 153 143 134 125 115 107 99 91 83 77 70 64 57 51 46 41 36 32 27 24 20 19 15 13 11 10 10 28 65 83 108 130 145 155 163 164 173 179 173 164 168 169 172 180 184 183 177 169 160 158 164 168 168 172 171 169 174 175 175 176 174 168 166 166 168 169 171 174 177 178 179 181 181 178 171 162 149 130 91 31 6 4 4 3 4 5 7 9 11 14 18 20 25 28 31 35 39 44 48 52 57 62 68 74 80 87 93 100 106 112 118 125 132 139 147 155 163 172 180 208 224
+ 219 207 196 187 177 167 158 148 138 130 120 111 103 94 85 79 72 66 59 54 48 42 37 32 28 24 22 18 15 13 11 10 8 7 25 66 88 109 129 140 151 159 163 168 177 173 162 166 173 182 184 182 174 165 161 152 154 163 161 158 161 160 163 165 166 170 174 170 165 162 161 160 162 164 166 169 172 175 180 181 178 171 161 152 133 98 42 6 4 3 2 3 3 5 7 9 12 15 18 22 25 29 32 36 40 44 49 53 58 64 70 76 83 89 96 103 109 116 121 129 135 143 150 159 167 176 194 220
+ 213 203 193 182 172 163 154 144 135 125 116 106 98 89 82 74 67 61 56 49 44 38 34 30 26 22 18 16 13 11 9 7 5 6 20 62 85 107 125 133 145 154 158 163 171 173 162 162 173 182 179 172 157 148 152 146 150 154 149 149 150 152 155 156 159 166 170 166 160 157 155 154 155 158 160 163 168 176 180 178 170 156 146 139 126 96 48 6 4 3 3 2 2 2 4 7 9 12 16 19 23 26 30 33 38 41 45 51 55 61 68 73 80 86 92 99 106 112 118 126 133 140 147 155 163 172 181 212
+ 212 201 192 181 171 161 152 143 132 123 113 104 96 87 80 72 65 59 53 47 42 36 32 28 24 21 17 15 11 10 8 6 4 4 10 53 71 97 118 127 133 147 155 156 165 170 165 161 170 176 168 163 145 132 136 147 143 140 140 139 142 148 150 152 156 163 163 160 156 151 150 150 151 152 155 158 164 174 178 173 160 137 118 114 110 92 57 10 4 3 2 2 2 2 2 4 6 10 13 16 20 23 27 30 34 37 41 46 51 57 63 69 75 81 88 94 101 108 114 120 127 135 142 151 158 166 174 190
+ 205 195 184 174 164 155 146 136 125 116 106 98 90 81 73 67 60 54 48 41 37 32 28 23 20 17 14 11 8 7 6 5 3 3 29 58 77 98 117 127 130 142 153 153 158 167 163 161 172 162 156 147 126 120 138 141 129 123 129 131 140 147 148 152 156 163 159 156 149 146 146 145 147 150 155 160 168 174 171 158 136 101 84 84 86 69 36 4 3 2 2 2 2 2 2 2 5 7 11 15 18 22 25 28 31 35 40 44 49 55 60 66 73 79 87 93 100 107 113 120 126 134 141 148 156 164 172 185
+ 203 194 182 173 163 153 143 134 124 114 104 96 87 80 72 64 58 52 46 40 34 30 26 22 18 15 13 10 8 6 4 3 3 3 20 53 75 89 108 120 130 136 147 154 158 165 168 164 170 159 156 145 127 121 127 135 122 112 115 126 137 147 146 149 155 161 160 158 151 148 147 146 144 147 153 159 165 166 160 145 135 116 76 68 71 64 35 4 3 3 2 3 2 2 2 2 3 5 9 11 15 19 22 24 28 31 35 40 45 51 56 62 69 75 82 89 95 102 109 115 122 129 135 143 151 159 167 176
+ 197 188 177 167 157 147 137 124 117 107 98 90 82 74 67 60 53 47 41 36 31 27 22 19 16 12 9 7 5 3 3 2 2 3 31 60 74 90 106 119 131 139 144 147 155 164 172 175 173 158 156 138 121 113 124 123 111 104 109 125 141 149 149 150 159 162 160 158 155 154 152 148 146 147 153 155 155 149 135 131 121 92 60 59 64 57 20 4 3 2 3 2 2 2 2 2 2 3 7 10 13 17 19 23 25 29 34 39 44 49 55 61 68 74 81 87 95 102 108 115 121 127 135 142 150 158 167 175
+ 194 184 173 163 153 143 133 123 113 104 95 87 79 71 64 57 51 45 39 33 28 25 20 17 13 11 9 6 3 2 2 2 2 2 33 58 71 85 101 114 126 137 142 141 147 158 166 172 172 161 156 136 112 107 116 113 109 111 117 127 141 147 154 153 158 163 164 161 159 158 156 153 149 149 150 149 141 130 123 119 112 78 51 49 58 58 30 4 3 2 2 2 2 2 2 3 3 2 5 8 11 13 16 20 23 27 32 36 42 47 53 58 65 72 78 85 92 99 106 112 119 125 132 139 147 155 163 173
+ 191 181 170 160 149 139 130 119 110 101 92 83 75 67 61 54 48 42 36 31 26 22 18 14 12 9 7 4 3 3 2 2 2 2 31 54 69 84 97 109 122 132 138 141 144 148 154 162 167 162 155 134 107 109 108 109 113 119 125 132 142 149 153 158 160 162 162 164 162 161 160 158 154 151 149 145 133 127 124 123 112 76 49 45 51 55 45 7 3 3 2 2 2 2 2 2 2 2 3 6 9 12 13 18 21 25 29 34 39 44 50 56 63 70 76 83 91 97 104 110 117 123 129 137 144 153 161 169
+ 190 179 169 158 149 139 129 118 108 99 90 82 75 67 60 53 47 41 35 30 25 22 18 15 11 8 6 4 3 3 2 3 3 2 16 42 60 79 93 105 116 126 133 141 145 144 143 143 156 163 157 141 110 107 107 119 122 124 128 132 139 147 155 159 161 162 163 163 163 163 164 163 160 157 153 150 138 131 129 128 118 92 53 49 49 53 52 36 5 2 3 2 2 3 2 2 2 2 2 3 6 9 12 15 19 22 26 31 35 40 47 53 59 66 73 79 87 93 100 106 113 119 126 132 140 148 156 164
+ 184 173 163 152 143 132 122 112 103 94 86 78 71 63 56 50 43 37 32 28 23 20 16 12 10 6 4 3 3 3 3 3 2 2 13 37 59 76 91 106 116 123 131 139 145 140 136 140 147 158 153 136 110 100 110 132 131 128 129 130 135 144 151 156 158 160 162 162 163 163 164 163 161 158 156 151 141 136 133 128 116 81 55 54 54 55 53 41 6 3 3 3 2 2 2 2 2 2 2 2 5 8 11 14 18 21 25 30 35 40 46 52 59 65 72 78 86 92 99 105 112 119 125 131 139 148 156 165
+ 180 170 160 150 139 129 119 109 99 93 83 75 67 60 54 47 41 36 30 26 22 18 14 11 8 5 4 3 3 2 3 2 3 2 2 28 53 67 81 101 111 116 127 130 137 137 128 136 139 155 151 140 112 100 107 131 131 127 125 124 126 133 141 146 149 153 158 159 158 158 160 159 160 158 157 155 150 144 139 131 116 84 62 57 56 56 54 48 27 4 3 2 3 2 2 2 2 2 2 2 3 7 9 13 16 21 24 28 33 38 44 50 57 64 70 77 84 90 97 104 110 117 123 130 137 145 153 162
+ 178 167 157 147 136 126 116 106 97 88 80 73 65 58 51 45 39 34 29 25 21 17 13 10 8 5 3 3 3 2 2 2 2 2 2 19 46 62 67 89 103 108 122 124 127 131 126 129 136 148 151 143 121 104 106 121 126 121 118 117 119 123 130 135 139 146 152 152 151 150 151 154 156 156 156 156 155 152 145 133 114 84 69 60 57 57 55 52 41 6 3 3 3 2 2 2 2 2 2 2 2 4 8 11 14 19 23 27 32 37 42 49 55 61 68 75 82 89 95 102 108 115 121 128 136 143 151 159
+ 175 164 154 144 133 123 113 104 94 86 78 71 64 57 50 43 38 33 28 24 20 16 13 10 7 4 3 2 3 2 2 2 2 2 2 12 38 55 59 71 88 103 120 124 125 130 131 132 132 138 148 141 131 116 109 108 116 112 110 112 115 120 124 128 133 139 144 142 140 138 142 147 151 153 153 154 153 152 147 135 116 87 73 62 58 58 56 54 49 28 3 3 2 2 2 2 2 2 2 2 2 3 7 10 13 17 21 26 30 35 41 47 53 60 66 73 80 88 94 100 106 113 120 126 134 141 149 158
+ 172 162 152 141 131 121 110 101 92 84 77 69 62 55 48 42 36 31 27 23 20 15 12 10 6 4 3 3 3 3 2 2 2 2 3 2 27 45 59 67 79 101 117 124 126 128 127 130 129 129 142 139 131 132 128 113 112 107 105 107 111 117 120 125 129 133 135 133 130 127 131 139 146 150 151 151 151 149 144 133 115 94 77 66 60 58 57 56 53 43 5 3 3 3 2 3 2 2 2 2 2 2 5 9 12 16 19 24 28 34 40 45 52 58 65 72 78 85 91 99 105 112 118 125 132 140 147 155
+ 170 160 149 139 128 118 108 100 91 82 75 67 60 54 47 41 35 31 26 22 18 15 12 9 6 4 3 3 3 3 3 3 2 2 2 1 12 39 57 68 82 101 113 120 121 123 119 116 119 122 132 140 132 133 134 122 111 106 103 104 110 115 119 121 126 128 127 127 122 120 121 128 138 146 147 148 149 148 140 129 113 96 84 70 60 58 56 55 55 50 27 4 3 2 3 3 2 2 2 2 2 2 4 7 11 15 19 23 27 32 37 44 51 56 63 70 77 83 91 97 103 110 117 123 131 139 146 154
+ 168 158 147 136 126 116 106 97 88 80 73 65 59 52 46 40 35 30 26 22 19 15 12 9 6 4 3 3 3 2 2 2 2 2 2 2 2 34 57 63 78 96 104 112 118 117 119 111 115 120 122 131 135 139 137 126 115 105 104 105 110 116 117 117 123 126 124 124 123 118 116 120 128 138 142 144 145 143 135 124 111 101 87 68 64 62 57 53 53 52 38 5 3 3 2 3 2 2 2 2 2 2 4 6 10 14 17 21 26 31 36 43 48 56 62 69 75 82 89 96 102 109 115 122 129 137 144 152
+ 166 156 145 134 124 114 105 95 87 79 71 64 57 50 45 39 34 30 26 22 19 15 12 9 6 4 3 3 2 2 3 2 3 3 2 2 2 27 53 60 71 89 96 101 113 116 116 118 117 115 114 112 124 138 141 132 119 102 105 106 112 114 115 115 118 124 124 120 122 120 118 115 119 128 132 135 137 135 128 120 111 103 82 70 75 76 68 60 56 51 38 5 3 3 3 2 2 2 2 2 2 3 2 6 10 13 17 20 24 30 35 41 47 53 60 68 75 81 88 94 101 107 114 121 128 136 142 151
+ 165 154 143 133 122 112 103 94 85 78 70 62 56 50 44 39 33 28 25 21 18 15 12 9 7 4 3 3 3 2 2 2 2 2 2 2 2 15 47 59 65 83 92 98 108 115 116 117 113 108 107 104 102 122 136 134 115 96 106 109 112 115 115 116 117 122 124 122 122 121 117 113 113 118 123 125 126 124 121 116 111 100 72 67 74 73 67 58 49 39 21 4 3 3 2 3 2 2 2 2 2 2 2 4 8 12 15 19 24 28 33 39 46 53 59 66 73 80 87 94 100 106 114 119 127 134 141 149
+ 163 153 141 131 121 111 101 92 84 76 69 61 56 49 43 38 33 30 25 21 18 15 12 10 7 4 3 2 2 2 2 2 2 2 2 2 2 3 33 55 68 79 90 100 107 110 110 113 109 102 95 97 89 92 112 113 100 95 104 112 114 116 117 118 119 121 123 122 120 119 117 113 109 110 113 116 114 113 111 110 106 92 64 60 59 55 44 29 18 6 4 3 2 2 2 3 2 2 2 2 2 2 2 4 7 11 14 18 22 28 32 38 45 51 58 65 71 78 86 92 99 105 112 118 125 132 140 148
+ 161 151 140 130 119 109 100 91 83 75 68 61 55 49 43 37 33 29 25 21 19 15 12 9 7 4 3 3 2 2 2 1 2 2 2 2 2 2 14 40 57 72 85 97 105 106 101 103 106 97 95 91 84 79 79 90 95 98 105 112 116 118 121 123 121 121 122 122 121 119 116 111 104 101 105 101 99 98 99 100 93 78 65 58 54 47 12 3 3 2 2 2 2 3 2 2 2 2 2 2 2 3 2 3 6 10 13 17 21 26 31 37 43 50 57 63 70 77 84 91 97 104 111 117 124 131 139 146
+ 160 149 138 129 117 108 98 89 82 74 67 60 55 48 42 37 32 28 25 21 18 15 12 10 8 5 4 3 2 3 2 2 2 2 2 2 2 2 7 33 47 65 76 90 99 103 101 97 104 102 95 92 86 83 77 85 96 102 108 113 118 120 121 124 125 123 124 123 121 119 115 109 101 99 99 94 90 91 94 94 86 77 70 63 57 44 6 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 6 9 12 16 20 25 31 36 42 49 55 63 70 76 83 90 97 103 110 116 123 130 137 145
+ 158 147 137 127 116 107 97 89 81 73 67 60 53 47 42 37 32 28 25 21 19 16 13 11 8 6 4 3 3 2 2 2 2 2 2 2 2 2 6 33 40 63 71 80 87 92 100 99 100 102 97 92 89 86 83 84 95 104 110 114 119 121 122 126 126 127 125 123 121 118 114 107 99 97 95 85 84 88 92 89 81 78 74 66 57 42 5 3 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 5 8 11 16 20 24 30 35 42 48 54 62 68 75 83 90 96 103 109 115 122 129 136 144
+ 157 147 137 126 116 107 97 88 80 73 66 59 53 46 41 37 33 29 25 22 20 16 14 11 9 7 5 3 3 3 3 3 3 2 2 2 2 2 3 29 38 60 66 76 79 83 93 94 90 98 96 93 91 90 88 87 92 101 109 115 118 122 123 127 127 127 126 121 117 117 112 105 100 98 93 81 85 89 85 84 81 75 70 63 53 38 5 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 5 8 11 15 19 24 28 35 40 47 54 61 68 75 82 89 96 103 108 115 122 128 136 143
+ 159 148 138 128 117 108 99 90 82 74 67 61 54 48 43 37 33 29 26 23 20 17 14 13 10 8 6 5 4 3 2 3 2 2 2 2 2 2 2 8 34 51 59 72 80 79 85 93 94 93 93 94 93 93 94 92 91 94 103 111 117 121 122 126 127 127 125 120 114 112 111 106 101 99 94 84 90 91 89 86 72 61 58 53 45 29 5 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 6 10 14 17 22 27 33 39 45 51 58 66 73 80 87 93 100 106 113 120 126 133 141
+ 156 145 135 124 114 105 96 88 80 72 66 58 53 47 42 37 33 29 25 23 20 18 15 13 11 8 7 5 4 3 3 2 2 3 2 2 2 1 2 6 32 47 57 73 82 81 84 86 90 90 92 93 94 94 95 94 91 92 102 110 116 121 122 126 127 126 123 118 115 112 109 104 100 100 91 89 94 93 91 77 58 53 51 43 29 7 3 2 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 4 7 11 15 19 24 29 34 40 46 52 60 67 74 81 88 95 102 108 114 121 128 136 142
+ 157 147 137 127 117 107 98 89 82 74 67 61 54 48 43 38 34 31 27 25 21 19 16 14 12 10 8 7 5 4 3 3 2 2 2 2 2 2 2 2 13 34 40 59 74 77 77 82 82 86 90 93 95 97 97 97 95 91 93 103 111 115 119 124 125 124 123 122 118 114 110 108 104 102 94 91 96 96 91 74 63 63 61 53 39 6 3 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 7 10 14 18 22 27 32 38 44 51 58 64 72 80 86 93 100 106 112 119 126 132 140
+ 155 145 134 124 114 105 96 88 80 73 66 60 53 47 42 38 34 30 27 24 22 19 16 14 13 11 9 7 5 4 4 3 2 3 2 2 2 2 2 2 4 23 33 44 56 68 77 78 80 86 90 93 98 100 100 98 96 93 90 98 108 113 115 121 123 121 123 123 119 115 114 111 107 103 93 93 94 94 84 67 64 61 55 44 23 4 3 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 5 8 11 15 19 24 28 34 39 45 52 59 66 73 81 88 94 101 108 114 121 127 135 142
+ 154 144 134 124 114 105 95 88 80 73 67 60 54 48 43 39 35 31 28 26 22 20 17 15 13 11 9 7 6 5 4 4 3 3 2 2 2 2 2 2 2 3 15 29 47 61 72 76 80 86 90 95 98 101 102 101 98 95 90 93 104 110 113 118 120 120 122 122 121 119 117 114 110 104 94 91 91 90 84 70 66 60 48 23 4 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 4 8 11 15 19 24 29 34 40 46 53 60 66 73 80 87 94 101 108 114 121 128 135 142
+ 157 146 136 126 116 107 98 90 82 76 69 62 57 51 45 41 37 33 30 27 24 21 19 17 15 13 11 8 7 7 6 4 3 4 3 2 2 2 2 2 2 2 2 6 37 55 66 74 80 85 90 95 99 101 103 103 101 97 95 91 96 104 110 114 118 118 120 121 122 123 121 116 114 108 98 94 90 91 90 80 69 61 48 21 4 3 3 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 4 8 10 14 18 22 28 33 39 45 52 58 65 72 79 86 92 99 106 113 119 127 133 141
+ 154 144 134 124 114 105 96 89 80 75 68 62 56 50 45 41 38 34 30 28 25 22 19 18 16 13 11 10 8 7 6 5 5 4 3 2 2 2 2 2 2 2 2 18 46 59 69 77 83 88 93 97 100 102 104 105 103 98 95 92 93 100 105 111 115 115 115 120 122 123 121 119 114 107 97 96 96 94 93 86 75 63 50 33 5 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 5 8 11 16 19 24 29 35 41 47 53 60 67 74 81 88 94 101 108 115 121 128 135 143
+ 155 145 134 124 114 106 97 88 82 75 69 63 57 52 47 43 39 36 32 29 26 23 21 19 17 15 13 11 9 8 7 6 5 4 3 3 2 2 2 2 2 2 4 36 55 68 74 79 85 90 94 97 100 103 105 106 106 102 96 93 92 94 98 104 110 114 114 118 120 121 123 120 115 110 102 99 103 102 100 96 86 75 62 51 30 4 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 5 9 13 16 20 25 30 35 41 48 55 60 68 74 82 89 95 102 109 115 122 129 136 143
+ 155 144 134 123 114 105 97 89 82 76 69 64 59 53 49 45 41 37 34 31 27 25 23 20 19 16 14 12 11 10 7 7 6 5 3 3 3 2 2 2 2 2 20 41 57 70 81 86 88 91 94 98 101 103 105 107 106 104 98 94 91 90 90 97 101 109 114 117 118 118 121 121 117 113 106 103 106 106 106 102 93 86 78 65 50 31 6 3 3 2 2 2 2 2 1 2 2 2 2 2 2 2 2 3 6 9 13 17 21 26 31 36 42 49 55 61 68 75 82 89 95 102 109 116 123 130 137 144
+ 154 144 134 124 114 106 98 90 83 77 71 65 60 55 50 45 42 39 36 33 30 27 24 22 19 17 15 15 13 11 9 8 7 6 5 4 3 2 2 2 2 11 38 49 59 70 81 90 95 97 97 98 100 103 104 106 107 105 101 96 92 88 88 91 95 103 107 109 113 114 118 121 118 117 111 106 109 110 109 104 96 92 87 78 66 49 26 4 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 4 6 10 14 18 22 27 32 38 43 49 55 62 69 76 83 90 97 103 110 117 124 130 137 145
+ 154 145 135 124 115 107 98 90 84 77 72 67 61 56 51 48 44 41 38 34 31 29 26 24 22 20 17 16 15 12 12 10 9 7 5 5 3 3 2 2 2 23 48 63 72 75 82 88 94 100 102 102 101 102 103 105 105 104 102 98 93 90 87 88 91 95 101 104 105 109 113 118 119 117 114 106 110 110 106 102 96 92 88 80 68 51 28 4 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 4 7 11 15 19 23 28 34 38 45 50 57 63 70 77 84 91 98 105 111 118 125 131 138 146
+ 158 149 142 128 119 113 104 96 87 80 75 70 66 60 55 51 47 44 41 38 34 31 29 26 25 23 21 18 16 15 14 13 11 10 8 6 5 3 2 2 3 29 51 67 77 86 90 90 92 96 100 104 106 104 103 103 103 103 102 99 95 90 87 86 88 91 95 100 99 100 103 108 114 113 114 109 107 107 101 98 94 89 84 77 67 51 30 5 3 3 2 1 2 2 2 2 2 2 2 2 2 2 2 5 8 11 14 18 24 28 33 39 45 50 57 63 70 77 84 90 97 104 111 118 124 130 137 145
+ 156 157 164 130 127 142 132 123 95 81 77 96 92 84 62 53 70 70 65 52 36 33 44 45 42 39 35 24 27 20 17 16 16 15 9 6 4 3 2 3 18 46 64 76 84 91 98 99 96 96 99 103 107 109 107 104 102 101 100 97 93 87 85 84 86 88 91 93 92 91 93 99 105 106 102 99 98 97 93 91 88 81 73 69 57 40 16 4 3 3 2 2 2 2 2 2 2 2 2 2 1 2 4 7 9 13 17 22 26 31 36 42 47 54 60 67 74 80 87 93 100 107 114 121 127 133 140 147
+ 158 158 170 132 128 145 119 123 114 83 80 105 90 79 63 55 79 70 64 73 47 35 52 62 53 57 48 26 33 44 20 22 42 22 9 6 4 3 2 3 32 55 70 80 88 94 100 104 105 100 99 101 105 108 109 108 106 101 99 96 92 87 83 79 81 84 86 87 87 85 84 88 91 93 85 81 81 82 82 82 81 77 66 58 49 31 6 3 3 3 2 2 2 2 2 2 2 2 2 2 2 2 5 8 10 14 18 23 28 32 37 43 49 56 61 68 74 81 88 94 102 108 115 121 128 135 141 149
+ 159 159 171 133 130 150 120 126 114 85 83 108 83 71 60 57 82 67 51 74 54 36 36 42 56 44 27 23 23 46 43 46 37 14 9 6 4 3 3 13 45 64 76 85 92 97 102 105 108 109 105 102 102 105 107 109 109 107 102 98 93 88 83 79 79 80 81 82 82 82 83 80 76 77 73 66 64 65 65 65 66 64 56 44 34 17 4 3 2 2 2 2 2 2 2 2 2 2 2 2 2 3 6 9 12 15 20 24 29 34 39 44 51 58 63 69 76 83 89 96 104 110 117 123 129 136 142 150
+ 160 160 173 136 132 152 142 138 111 87 85 111 104 87 62 58 85 82 78 76 47 38 35 36 63 40 26 22 23 31 53 45 18 13 9 7 4 3 3 33 57 72 82 90 96 101 104 108 109 111 112 111 105 103 104 106 108 109 107 102 97 91 84 78 76 79 79 79 78 79 82 78 68 62 58 53 49 47 46 47 47 45 39 26 15 5 3 3 2 2 2 2 2 2 2 2 2 1 2 2 2 4 7 10 14 18 22 26 31 36 42 47 52 59 65 72 78 84 91 98 104 111 118 124 130 138 144 151
+ 166 158 178 144 130 154 126 120 130 95 87 107 92 77 64 61 78 83 73 78 49 39 36 36 59 51 27 23 22 24 39 43 17 13 10 7 5 4 10 43 64 78 88 93 100 103 106 108 109 111 112 114 114 111 105 104 105 107 108 107 105 99 91 82 76 76 76 76 77 77 78 76 69 58 49 39 34 29 26 26 25 24 21 10 4 3 3 2 2 2 2 2 2 2 2 1 2 2 2 2 3 5 8 11 14 18 23 27 32 36 42 47 53 60 66 72 79 85 92 98 105 112 118 124 130 137 143 150
+ 172 161 177 145 133 156 135 123 127 96 90 109 90 76 69 63 79 75 54 71 61 41 37 37 59 52 28 23 21 23 39 41 17 12 11 7 5 7 35 58 76 87 94 99 103 107 109 109 111 111 111 113 115 116 114 107 104 106 107 107 107 105 101 91 79 74 75 76 76 74 73 71 65 57 46 30 14 7 5 4 3 3 3 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 4 7 10 13 16 20 25 30 34 39 44 50 56 62 68 74 81 88 94 101 107 113 120 126 132 139 145 152
+ 167 162 159 140 138 144 138 126 104 94 93 107 104 96 74 64 81 64 52 64 63 42 37 38 61 42 26 23 21 24 45 31 16 11 8 7 8 34 59 76 88 96 102 106 108 110 111 110 110 110 112 112 114 116 117 115 109 106 106 107 107 106 104 99 86 76 74 77 75 73 68 64 59 53 38 14 4 3 2 2 2 2 2 2 2 2 2 2 2 2 2 1 2 2 2 2 2 2 2 4 6 9 12 16 20 23 28 33 38 44 48 53 60 66 72 79 85 91 98 105 111 117 123 130 135 142 149 156
+ 171 161 153 144 135 128 122 114 106 99 93 90 83 77 72 66 63 60 55 52 48 45 41 37 40 35 27 24 21 21 28 27 15 10 9 8 16 49 72 87 97 104 108 112 113 113 113 112 110 110 109 111 113 114 115 117 118 115 109 107 106 107 106 105 101 94 84 79 77 74 72 64 57 49 39 9 5 4 3 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 6 8 10 14 17 21 25 30 34 39 44 50 55 61 67 73 80 87 93 100 106 112 119 125 130 136 142 149 156
+ 170 161 152 143 135 128 122 114 107 100 94 88 82 77 71 66 63 60 55 52 48 43 40 36 35 30 26 23 21 20 19 17 14 11 10 19 46 65 85 97 106 111 114 117 117 117 115 113 111 110 109 111 112 114 115 116 117 118 116 110 107 107 107 106 104 101 96 89 80 77 73 64 53 38 21 8 7 7 5 5 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 6 8 10 14 16 20 24 29 33 38 43 48 53 59 65 72 78 84 91 97 104 110 116 122 128 134 140 147 153 160
+ 172 163 154 146 138 131 124 116 109 103 96 90 84 78 73 68 64 60 56 52 48 44 40 37 33 31 27 24 21 19 17 14 13 11 15 41 61 76 89 100 109 114 119 120 121 119 117 115 113 111 110 110 111 113 114 115 116 118 119 117 112 108 107 106 106 105 103 100 92 82 75 63 40 20 11 10 9 9 8 7 6 5 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 5 7 10 13 15 19 22 26 31 35 40 46 50 55 62 67 74 80 86 93 100 106 112 119 124 130 136 142 148 155 162
+ 175 166 157 149 141 133 127 119 111 105 99 92 86 80 75 70 66 62 58 53 49 45 41 38 34 32 27 24 21 19 16 14 11 14 34 57 72 85 95 103 110 115 120 122 124 123 121 120 116 114 112 110 110 111 113 113 115 116 119 120 118 112 109 107 107 106 107 105 103 94 77 63 34 15 12 11 13 12 10 9 8 6 4 3 3 3 3 3 2 3 2 2 2 2 2 2 4 6 9 12 15 18 22 25 29 33 37 42 48 53 58 64 69 77 83 90 96 102 108 114 121 126 132 138 144 151 157 163
+ 177 168 160 151 143 136 128 121 114 107 101 94 89 82 77 73 68 64 59 55 50 47 44 39 35 32 29 26 22 19 16 15 14 24 48 66 79 90 98 105 109 113 117 122 125 125 124 123 120 117 114 112 111 110 111 111 113 115 118 120 120 120 113 109 109 108 108 108 107 105 95 72 51 22 15 14 14 13 13 12 10 7 4 4 3 3 2 3 2 2 2 2 2 2 2 3 5 8 11 14 18 20 23 27 32 36 41 45 49 56 61 67 73 79 86 91 98 105 111 117 123 129 135 140 146 153 159 166
+ 182 173 164 156 147 140 132 125 118 111 104 98 92 87 81 76 71 67 62 57 53 50 45 41 39 34 31 28 24 21 18 16 16 31 54 70 82 91 99 105 109 112 114 117 122 125 127 127 126 122 119 116 114 111 112 111 110 113 116 118 121 123 122 116 110 109 110 111 111 108 106 96 69 44 20 16 16 16 15 13 12 9 7 5 3 3 2 3 2 2 2 2 2 2 4 5 7 10 12 16 18 22 26 29 34 38 42 46 51 57 61 67 73 79 86 92 99 106 112 118 124 130 135 142 148 155 160 166
+ 184 175 166 158 151 142 135 127 120 113 107 101 94 89 84 78 73 68 64 60 55 51 47 43 39 35 32 29 25 22 19 18 21 45 63 76 86 94 100 105 109 112 114 116 119 123 126 129 129 127 123 120 117 114 112 111 110 111 114 117 119 122 123 124 118 111 111 114 115 113 109 97 79 56 36 19 18 18 16 14 12 10 8 6 3 3 3 3 3 3 3 2 3 3 5 6 9 12 14 17 20 25 28 32 35 40 44 48 53 59 64 70 76 82 88 95 101 108 114 121 126 132 137 143 149 156 162 169
+ 186 176 170 160 153 145 137 130 123 116 110 104 97 91 87 81 75 70 65 61 56 54 48 45 40 38 33 30 27 22 20 18 31 55 70 81 90 97 102 106 111 113 115 116 118 121 122 126 130 131 129 124 121 118 114 112 110 111 112 115 118 122 125 126 125 120 116 116 120 122 121 104 89 82 69 42 31 29 18 15 13 11 9 7 4 4 2 2 2 2 2 3 4 5 7 9 11 14 17 20 23 27 30 33 39 41 47 50 56 61 67 72 79 85 91 98 103 111 117 123 129 135 140 145 152 158 165 171
+ 187 178 169 161 153 145 138 131 123 117 110 104 98 93 87 81 76 72 66 61 57 52 48 44 41 37 33 30 26 22 20 26 51 70 80 91 97 102 108 111 115 117 118 119 120 122 121 123 127 133 132 128 125 121 117 113 112 111 112 114 118 122 125 127 128 127 122 120 123 137 135 118 97 90 82 56 31 30 19 16 14 12 9 7 6 5 4 4 4 4 4 5 7 7 9 12 14 17 19 23 26 29 34 37 41 45 50 54 60 65 71 77 83 90 96 102 108 115 121 127 133 138 144 150 156 161 169 176
+ 193 183 174 166 157 150 143 135 128 121 114 108 102 96 91 85 79 75 69 65 60 56 52 47 44 39 35 31 27 23 21 32 58 74 86 95 102 108 112 115 119 121 122 124 124 123 122 122 121 126 133 133 130 127 123 119 115 112 112 113 116 120 124 127 129 129 130 130 134 137 141 127 104 96 91 73 43 30 29 19 16 13 12 9 8 7 6 5 5 5 6 7 9 10 12 13 15 19 21 25 28 32 35 38 42 47 51 55 61 66 72 78 85 91 97 104 110 116 122 128 134 139 145 150 157 163 170 178
+ 193 184 175 166 159 150 142 136 129 122 115 109 103 97 92 86 80 75 71 65 61 56 52 48 44 40 35 32 28 25 29 57 75 87 97 106 112 116 119 123 125 127 128 128 128 127 126 124 122 122 128 134 134 131 127 122 117 114 114 114 116 121 125 128 131 131 131 138 140 137 143 127 109 97 88 67 39 31 35 20 16 15 13 11 10 8 7 8 8 8 9 10 11 12 14 17 19 22 24 27 31 35 39 42 45 50 54 59 64 70 76 83 90 96 102 108 114 120 127 132 138 143 148 154 160 167 174 182
+ 196 187 178 170 161 154 146 138 131 125 118 111 106 101 95 89 84 77 72 67 63 59 54 50 45 41 36 32 29 28 50 72 87 98 107 114 120 123 127 130 132 134 133 132 132 131 128 125 123 121 121 126 132 134 131 126 120 116 115 116 117 121 125 128 133 132 132 142 143 135 143 135 111 93 86 62 31 28 27 19 18 17 15 13 11 11 9 10 10 10 12 13 13 15 17 19 22 25 27 30 34 38 41 45 48 52 57 62 67 73 80 86 92 98 105 111 118 124 130 135 141 146 151 157 163 170 177 185
+ 199 190 181 172 164 156 148 140 134 127 120 115 108 103 97 92 86 80 74 70 65 60 55 51 47 43 37 34 31 41 70 87 99 110 118 124 130 132 135 136 139 139 139 138 136 134 132 128 125 122 121 121 125 134 134 129 123 120 118 118 119 120 127 131 135 135 136 145 147 147 143 132 98 82 70 43 31 36 25 21 20 18 16 14 13 13 12 12 13 14 14 15 16 18 19 22 24 27 30 34 37 40 43 47 51 58 59 65 71 77 83 89 96 101 108 115 121 128 134 138 143 148 153 159 166 173 181 187
+ 203 194 184 175 167 159 151 144 137 130 123 118 112 106 100 94 89 83 77 72 67 62 57 53 48 44 39 36 40 67 87 101 112 121 127 132 136 140 141 142 144 144 143 142 141 139 136 133 129 125 123 122 122 128 136 134 129 123 120 119 119 120 125 132 136 137 138 146 149 149 143 130 100 84 67 48 44 37 27 22 22 20 19 17 16 15 15 15 15 16 18 19 20 26 23 26 28 31 35 38 41 44 47 51 54 58 64 70 78 82 87 93 99 105 112 118 124 132 138 142 146 151 157 162 168 176 183 190
+ 206 198 190 181 172 164 156 149 142 135 128 123 116 110 104 99 92 86 81 75 71 65 61 55 51 46 43 42 59 81 98 112 122 130 135 140 142 144 146 147 147 147 147 146 144 143 142 139 136 132 128 127 125 125 129 137 135 129 123 121 119 119 123 129 136 140 138 142 144 142 142 132 113 98 82 63 52 50 31 27 24 23 21 20 18 17 16 17 18 19 20 22 24 45 47 29 30 35 56 68 72 65 51 53 57 61 72 99 110 112 94 94 100 107 113 119 128 154 169 154 149 152 157 164 170 177 185 192
+ 207 200 190 182 173 165 158 150 143 136 130 123 118 111 106 100 94 88 82 76 71 66 61 56 51 48 47 64 86 103 117 127 134 139 144 147 148 150 150 149 148 148 147 146 144 144 143 143 141 137 133 131 128 127 127 135 135 130 124 121 119 119 122 130 138 143 145 147 148 147 140 130 119 104 88 72 58 53 47 30 27 25 23 21 22 20 19 20 21 21 24 26 30 58 42 32 35 66 68 58 66 85 69 59 62 69 105 104 101 125 109 100 105 112 118 126 154 173 176 150 152 156 162 168 175 184 189 196
+ 211 202 194 186 177 169 161 154 147 140 134 127 121 115 108 102 96 91 85 79 74 68 63 59 55 52 65 86 105 119 130 137 143 145 150 152 153 153 152 150 149 148 146 142 139 138 139 141 142 140 138 136 133 130 127 129 136 134 127 121 118 118 121 128 138 145 148 151 151 152 147 136 126 114 99 83 67 56 53 46 30 28 26 24 24 22 22 23 24 25 27 29 32 62 45 35 43 74 50 47 52 78 90 64 66 75 111 96 94 125 117 104 109 115 122 149 164 167 179 151 155 159 165 172 179 187 193 199
+ 214 205 198 188 180 172 165 158 151 145 137 130 124 118 112 106 100 94 88 82 77 71 66 61 57 65 86 105 121 131 140 145 149 151 154 155 156 155 153 152 150 149 147 143 139 134 130 130 134 139 140 140 136 132 128 127 132 136 130 122 118 117 119 125 137 145 151 155 156 155 152 144 132 123 111 95 78 64 55 53 45 32 29 27 26 25 26 26 26 28 30 31 37 65 47 38 44 75 55 50 53 71 98 68 70 77 107 121 120 135 110 108 113 121 146 161 145 163 181 154 157 162 168 175 182 190 195 203
+ 217 209 201 193 185 176 169 162 154 147 141 134 127 122 115 109 102 96 90 83 79 73 68 64 63 85 104 121 133 142 149 152 155 156 157 158 158 158 156 154 152 151 149 147 143 139 133 126 125 128 133 139 139 135 131 129 128 136 133 126 120 118 118 123 134 146 154 156 158 159 157 152 138 129 121 109 94 76 63 54 54 45 33 30 29 28 29 29 30 32 33 35 40 69 50 41 45 70 80 57 57 72 102 72 74 91 119 120 121 135 122 112 118 144 164 146 146 169 185 160 161 166 171 178 185 192 199 209
+ 222 213 204 196 189 180 173 165 158 151 144 137 131 125 118 112 106 99 93 87 82 76 70 67 80 104 121 135 145 152 157 159 160 161 161 160 159 159 157 156 154 152 149 149 148 144 140 132 124 121 122 127 135 137 134 130 128 132 136 130 125 121 121 123 132 145 155 159 161 162 160 157 148 132 127 121 110 92 77 63 54 54 45 35 32 32 31 33 33 34 36 39 44 72 52 45 47 52 66 58 62 83 104 75 78 108 117 96 100 120 145 117 128 160 171 172 176 185 192 191 190 170 174 181 188 195 203 219
+ 225 217 208 200 192 185 176 169 162 155 148 141 135 129 122 116 108 103 96 91 85 79 73 74 99 120 135 147 156 162 165 166 167 165 164 162 160 158 157 155 152 151 151 150 151 149 145 139 131 123 119 119 124 133 136 131 128 130 138 133 127 124 123 126 131 144 156 161 163 164 163 161 155 141 130 126 121 110 94 77 62 54 55 45 36 34 35 35 37 38 39 42 48 75 55 49 52 54 57 60 65 97 102 77 83 113 118 98 104 125 154 124 128 142 149 156 165 183 195 185 184 174 177 184 192 199 207 231
+ 232 223 215 206 199 191 183 176 167 161 154 147 141 134 127 121 114 108 102 96 89 84 77 81 111 129 145 157 166 172 175 175 173 173 170 167 163 158 156 153 151 148 149 150 151 151 150 147 141 132 124 118 118 122 132 135 133 129 136 139 132 128 126 126 132 140 154 162 164 165 166 164 160 154 139 131 127 123 114 98 81 63 54 56 47 39 38 39 39 40 43 45 49 74 70 53 55 58 60 64 70 103 96 80 84 96 127 125 122 142 155 129 127 131 136 142 149 168 193 169 171 175 180 187 194 201 212 234
+ 238 227 219 211 203 195 187 180 172 164 158 151 144 138 131 125 118 112 107 99 92 86 82 101 126 145 160 172 179 182 184 184 183 181 179 177 173 167 161 156 151 147 144 147 150 152 152 150 147 139 131 122 118 118 123 134 141 145 144 143 138 132 129 129 131 140 152 162 166 167 167 168 165 161 152 136 132 128 123 112 97 79 61 56 59 46 42 42 43 43 46 49 52 59 59 56 59 62 64 69 92 106 83 83 88 93 109 132 143 145 135 127 131 134 138 145 151 164 183 170 173 179 185 191 198 206 224 236
+ 245 229 220 212 205 198 190 182 175 167 160 153 147 140 134 127 121 114 107 102 94 88 99 130 150 164 175 182 187 188 189 189 188 186 184 181 179 175 170 165 157 151 145 143 146 149 151 150 149 143 135 125 119 117 121 130 143 154 153 149 142 137 133 133 135 142 154 165 168 169 170 170 168 165 159 142 135 132 127 119 104 89 71 60 60 59 47 46 46 48 49 52 55 57 58 62 64 67 71 96 105 85 84 87 93 99 105 112 120 124 127 132 136 139 143 150 156 163 168 171 177 184 191 197 204 217 236 236
+ 241 238 227 219 211 204 196 189 181 174 166 159 152 147 140 134 127 120 113 106 99 96 116 143 161 173 181 186 191 192 191 192 191 190 187 185 182 180 177 172 168 162 156 147 142 143 147 149 150 148 143 136 127 122 117 122 134 149 156 152 148 142 138 137 136 142 150 162 169 171 172 172 172 171 168 160 143 138 134 126 114 102 89 74 64 64 63 52 50 51 52 56 58 59 62 65 67 71 88 106 93 85 87 91 97 101 107 112 118 123 128 133 138 142 147 152 158 164 169 175 180 186 193 199 207 224 237 235
+ 219 247 232 224 217 208 201 193 185 177 171 164 158 151 145 138 132 125 118 111 104 110 138 159 173 181 186 190 191 194 193 193 192 192 190 187 185 182 178 175 172 168 164 158 149 139 140 145 147 149 146 143 136 127 121 119 128 142 157 155 150 146 142 141 140 143 150 160 169 171 173 173 175 175 174 169 155 143 139 133 120 110 100 87 74 66 68 64 55 54 55 58 61 64 66 68 72 76 86 89 86 88 92 96 100 106 112 116 121 126 131 137 142 146 152 157 162 168 173 179 185 191 197 204 214 234 236 234
+ 197 244 235 228 219 211 203 195 188 181 174 168 161 155 148 141 135 128 120 114 111 137 158 174 183 188 191 192 193 195 195 193 193 191 190 188 184 181 178 175 172 169 166 162 153 143 136 139 145 147 147 145 142 135 126 120 125 140 156 156 151 146 145 143 144 146 152 161 169 173 175 176 179 180 178 174 163 147 143 138 125 115 106 97 85 74 71 73 62 60 61 62 65 69 71 74 76 80 84 88 91 94 97 101 106 112 117 121 127 131 136 141 147 152 157 163 168 173 179 185 192 197 204 212 232 237 235 230
+ 165 227 246 231 224 216 207 201 193 186 179 172 166 159 153 146 139 132 126 120 127 153 168 181 188 193 196 196 196 194 195 195 193 193 190 187 184 181 178 175 172 170 167 164 157 149 138 133 140 145 146 146 146 141 133 125 124 133 154 158 153 149 148 147 148 148 152 159 168 174 176 178 181 183 182 180 172 155 149 145 136 124 116 108 98 86 78 77 77 66 65 67 68 71 75 79 81 84 88 92 95 98 101 106 111 116 120 125 129 135 140 145 150 156 161 167 172 178 184 190 196 202 209 221 236 235 233 231
+ 129 191 241 238 229 222 213 206 199 192 184 177 171 165 158 151 144 137 130 125 141 162 176 186 193 197 199 198 197 196 196 195 194 192 190 187 183 179 176 174 171 170 168 164 158 152 144 134 134 140 143 144 146 144 140 132 128 132 149 161 158 153 150 150 150 152 152 156 165 175 178 181 183 185 186 184 178 166 156 152 146 137 125 117 109 99 89 81 82 82 72 72 73 77 79 82 85 90 92 95 101 103 107 111 116 120 125 130 135 139 144 149 155 159 165 171 176 182 189 195 200 206 215 234 237 235 232 225
+ 85 155 212 246 234 226 219 211 203 197 190 182 175 169 162 156 149 141 136 132 152 169 181 191 198 201 202 201 199 197 196 195 194 192 190 186 183 178 175 172 171 168 167 164 160 153 146 139 132 134 139 141 143 144 142 136 134 134 144 162 162 158 153 148 149 150 150 153 160 170 179 182 185 188 189 187 182 176 164 159 154 147 138 128 118 109 101 91 83 88 87 77 78 81 83 87 90 92 97 101 104 107 111 115 120 125 129 133 139 143 148 153 159 164 169 175 181 187 194 199 204 211 226 237 236 233 230 186
+ 19 94 163 220 244 233 226 218 210 202 197 189 182 175 168 161 155 147 140 137 154 172 184 192 199 203 205 205 203 200 196 194 193 192 190 187 183 179 175 173 170 169 168 167 163 157 151 145 138 129 132 135 137 142 144 140 138 137 140 154 167 165 160 154 152 152 150 148 152 160 176 184 186 190 191 190 188 183 175 167 163 155 148 139 128 119 111 103 94 88 94 93 83 85 87 90 93 96 101 104 108 111 115 119 123 128 132 137 141 146 151 156 162 167 174 178 184 190 196 201 207 215 234 237 235 232 226 162
+ 1 68 139 197 244 238 229 222 214 206 200 193 185 178 172 165 157 150 145 142 166 182 190 197 202 205 207 207 205 201 197 193 192 191 190 185 182 177 174 172 171 169 167 169 167 159 152 148 142 132 127 130 131 139 144 141 139 140 142 153 170 170 166 163 163 162 160 156 159 165 178 187 191 194 194 193 191 187 181 173 166 158 152 143 132 123 114 109 101 92 96 102 93 89 92 95 98 102 106 109 113 117 120 125 129 133 137 142 147 152 156 162 166 173 178 185 191 196 202 207 214 232 238 236 232 228 169 84
+ 1 3 73 143 200 243 237 230 222 215 206 200 193 185 178 171 164 157 150 147 166 184 192 198 203 206 208 208 207 204 199 194 191 190 189 186 183 178 175 172 171 171 172 171 171 167 161 153 148 142 128 121 124 129 140 143 140 140 142 145 164 174 173 169 167 166 166 161 157 160 172 187 192 196 197 196 195 192 189 182 175 166 157 151 143 131 122 115 110 102 96 102 109 103 97 99 102 105 109 113 116 120 124 128 133 136 140 145 150 155 160 165 170 175 181 187 193 199 203 210 220 237 236 235 231 211 138 37
+ 2 2 27 97 162 221 243 234 228 220 212 205 198 191 183 176 168 162 154 152 171 187 195 200 205 207 208 209 209 205 201 195 191 190 188 185 183 180 176 173 171 170 171 170 173 171 167 161 153 148 136 117 117 120 133 142 140 140 144 144 158 176 178 175 172 171 169 165 160 160 169 186 196 200 200 199 197 196 194 189 181 175 166 156 149 139 129 121 117 112 102 104 112 116 105 104 106 109 112 117 120 124 128 132 136 141 145 149 154 159 164 169 174 180 186 193 197 202 208 215 234 238 234 233 224 160 74 4
+ 2 1 1 49 117 180 229 242 233 226 219 210 204 196 188 182 173 166 159 157 177 191 198 203 206 208 209 209 209 208 203 197 191 189 187 184 183 181 178 175 172 172 169 168 171 173 169 163 159 154 145 124 111 114 124 139 140 142 143 142 152 174 182 181 177 174 173 169 164 161 167 185 199 204 204 201 200 199 199 195 188 183 175 164 154 146 137 129 122 118 110 109 114 122 122 111 111 113 117 121 125 129 133 137 141 145 149 154 159 163 167 173 179 185 191 196 201 206 214 229 237 237 233 228 180 103 4 4
+ 1 1 1 17 84 149 207 243 238 230 222 214 207 200 192 185 177 168 162 168 186 196 202 205 208 210 210 210 210 208 205 198 190 186 184 183 182 181 180 178 175 173 166 166 168 172 170 163 158 156 150 131 110 111 119 137 140 141 142 142 152 174 187 186 182 178 175 172 165 162 167 185 203 207 207 203 203 203 202 197 192 187 183 172 158 147 141 133 127 123 117 116 119 127 131 123 118 120 123 127 130 134 137 142 146 151 154 159 164 169 173 179 185 191 196 201 206 213 228 237 236 233 229 189 111 12 3 3
+ 1 1 1 1 34 100 162 218 243 236 229 221 212 204 197 189 181 173 167 176 192 200 205 208 210 212 211 211 210 210 208 205 197 189 184 182 182 182 182 180 178 176 168 168 166 168 171 168 160 153 152 143 120 107 112 134 139 141 142 140 148 169 187 191 188 184 180 176 170 164 166 179 201 209 210 207 205 206 206 202 196 190 188 181 169 153 145 141 135 129 123 123 121 130 138 139 128 125 128 131 135 138 143 146 151 155 159 164 168 173 179 185 191 196 200 206 211 224 237 237 234 230 200 129 37 3 4 3
+ 1 1 1 1 1 37 101 162 215 241 238 229 221 212 203 196 188 180 173 177 194 203 207 211 212 213 213 213 212 211 211 209 206 199 192 185 185 182 182 182 180 179 175 173 169 168 168 171 167 157 149 149 138 113 107 123 138 141 142 140 143 162 182 195 196 192 186 181 177 170 166 171 191 210 212 210 207 208 208 207 201 196 191 190 183 171 154 145 142 138 130 125 127 127 139 146 147 133 132 135 138 141 145 149 153 157 162 167 172 177 182 188 195 199 203 209 217 234 238 235 231 224 166 89 6 4 4 3
+ 1 1 1 1 1 4 68 132 186 230 242 233 226 215 207 199 191 183 177 189 202 208 212 213 215 215 215 215 214 214 212 211 208 204 199 194 188 184 183 182 180 180 175 175 172 169 168 170 170 162 148 144 141 117 109 124 139 143 143 140 146 167 185 198 202 197 193 187 182 174 169 172 191 212 215 211 208 210 212 210 204 200 193 193 190 181 165 150 145 142 133 128 133 133 144 151 154 143 138 140 143 147 151 155 159 163 168 173 178 184 189 195 200 204 210 217 235 238 236 231 221 164 90 5 4 3 3 3
+ 1 2 1 1 1 1 14 79 140 193 235 240 232 222 213 204 196 187 181 193 205 211 215 217 218 219 219 218 217 216 215 213 210 206 203 200 196 191 188 184 183 180 180 178 176 173 170 169 171 169 156 144 141 128 112 120 140 143 143 143 146 165 186 198 206 205 199 194 187 179 172 173 187 213 217 215 211 212 214 215 211 205 198 195 193 190 181 163 149 145 139 133 139 137 146 156 160 159 145 145 147 151 155 159 163 168 173 178 184 189 196 200 204 210 216 233 238 237 232 225 176 106 10 3 3 3 3 3
+
+
--- a/examples/embedded.cc	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-#include <iostream>
-#include <octave/oct.h>
-#include <octave/octave.h>
-#include <octave/parse.h>
-#include <octave/toplev.h>
-
-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;
-  octave_value_list in;
-
-  for (octave_idx_type i = 0; i < n; i++)
-    in(i) = octave_value (5 * (i + 2));
-
-  octave_value_list out = feval ("gcd", in, 1);
-
-  if (! error_state && out.length () > 0)
-    std::cout << "GCD of ["
-              << in(0).int_value ()
-              << ", "
-              << in(1).int_value ()
-              << "] is " << out(0).int_value ()
-              << std::endl;
-  else
-    std::cout << "invalid\n";
-
-  clean_up_and_exit (0);
-}
--- a/examples/fortrandemo.cc	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-#include <octave/oct.h>
-#include <octave/f77-fcn.h>
-
-extern "C"
-{
-  F77_RET_T
-  F77_FUNC (fortransub, FORTSUB)
-    (const int&, double*, F77_CHAR_ARG_DECL F77_CHAR_ARG_LEN_DECL);
-}
-
-DEFUN_DLD (fortrandemo, args, , "Fortran Demo")
-{
-  octave_value_list retval;
-  int nargin = args.length ();
-
-  if (nargin != 1)
-    print_usage ();
-  else
-    {
-      NDArray a = args(0).array_value ();
-      if (! error_state)
-        {
-          double *av = a.fortran_vec ();
-          octave_idx_type na = a.numel ();
-          OCTAVE_LOCAL_BUFFER (char, ctmp, 128);
-
-          F77_XFCN (fortransub, FORTSUB,
-                    (na, av, ctmp F77_CHAR_ARG_LEN (128)));
-
-          retval(1) = std::string (ctmp);
-          retval(0) = a;
-        }
-    }
-  return retval;
-}
--- a/examples/fortransub.f	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,21 +0,0 @@
-      subroutine fortransub (n, a, s)
-      implicit none
-      character*(*) s
-      real*8 a(*)
-      integer*4 i, n, ioerr
-      do i = 1, n
-        if (a(i) .eq. 0d0) then
-          call xstopx ('fortransub: divide by zero')
-        else
-          a(i) = 1d0 / a(i)
-        endif
-      enddo
-      write (unit = s, fmt = '(a,i3,a,a)', iostat = ioerr)
-     $       'There are ', n,
-     $       ' values in the input vector', char(0)
-      if (ioerr .ne. 0) then
-        call xstopx ('fortransub: error writing string')
-      endif
-      return
-      end
-
--- a/examples/funcdemo.cc	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-#include <octave/oct.h>
-#include <octave/parse.h>
-
-DEFUN_DLD (funcdemo, args, nargout, "Function Demo")
-{
-  octave_value_list retval;
-  int nargin = args.length ();
-
-  if (nargin < 2)
-    print_usage ();
-  else
-    {
-      octave_value_list newargs;
-      for (octave_idx_type i = nargin - 1; i > 0; i--)
-        newargs(i-1) = args(i);
-      if (args(0).is_function_handle () || args(0).is_inline_function ())
-        {
-          octave_function *fcn = args(0).function_value ();
-          if (! error_state)
-            retval = feval (fcn, newargs, nargout);
-        }
-      else if (args(0).is_string ())
-        {
-          std::string fcn = args(0).string_value ();
-          if (! error_state)
-            retval = feval (fcn, newargs, nargout);
-        }
-      else
-        error ("funcdemo: INPUT must be string, inline, or function handle");
-    }
-  return retval;
-}
--- a/examples/globaldemo.cc	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-#include <octave/oct.h>
-
-DEFUN_DLD (globaldemo, args, , "Global Demo")
-{
-  octave_value retval;
-  int nargin = args.length ();
-
-  if (nargin != 1)
-    print_usage ();
-  else
-    {
-      std::string s = args(0).string_value ();
-      if (! error_state)
-        {
-          octave_value tmp = get_global_value (s, true);
-          if (tmp.is_defined ())
-            retval = tmp;
-          else
-            retval = "Global variable not found";
-
-          set_global_value ("a", 42.0);
-        }
-    }
-  return retval;
-}
--- a/examples/helloworld.cc	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-#include <octave/oct.h>
-
-DEFUN_DLD (helloworld, args, nargout,
-           "Hello World Help String")
-{
-  int nargin = args.length ();
-
-  octave_stdout << "Hello World has "
-                << nargin << " input arguments and "
-                << nargout << " output arguments.\n";
-
-  return octave_value_list ();
-}
--- a/examples/make_int.cc	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,316 +0,0 @@
-#include <octave/config.h>
-
-#include <cstdlib>
-
-#include <string>
-
-#include <ostream>
-
-#include <octave/lo-mappers.h>
-#include <octave/lo-utils.h>
-#include <octave/mx-base.h>
-#include <octave/str-vec.h>
-
-#include <octave/defun-dld.h>
-#include <octave/error.h>
-#include <octave/gripes.h>
-#include <octave/oct-obj.h>
-#include <octave/ops.h>
-#include <octave/ov-base.h>
-#include <octave/ov-typeinfo.h>
-#include <octave/ov.h>
-#include <octave/ov-scalar.h>
-#include <octave/pager.h>
-#include <octave/pr-output.h>
-#include <octave/symtab.h>
-#include <octave/variables.h>
-
-class octave_value_list;
-
-class tree_walker;
-
-// Integer values.
-
-class
-octave_integer : public octave_base_value
-{
-public:
-
-  octave_integer (void)
-    : octave_base_value (), scalar (0) { }
-
-  octave_integer (int i)
-    : octave_base_value (), scalar (i) { }
-
-  octave_integer (const octave_integer& s)
-    : octave_base_value (), scalar (s.scalar) { }
-
-  ~octave_integer (void) { }
-
-  octave_base_value *clone (void) { return new octave_integer (*this); }
-
-#if 0
-  void *operator new (size_t size);
-  void operator delete (void *p, size_t size);
-#endif
-
-  idx_vector index_vector (void) const { return idx_vector ((double) scalar); }
-
-  int rows (void) const { return 1; }
-  int columns (void) const { return 1; }
-
-  bool is_constant (void) const { return true; }
-
-  bool is_defined (void) const { return true; }
-  bool is_real_scalar (void) const { return true; }
-
-  octave_value all (void) const { return (double) (scalar != 0); }
-  octave_value any (void) const { return (double) (scalar != 0); }
-
-  bool is_real_type (void) const { return true; }
-  bool is_scalar_type (void) const { return true; }
-  bool is_numeric_type (void) const { return true; }
-
-  bool valid_as_scalar_index (void) const
-  { return scalar == 1; }
-
-  bool valid_as_zero_index (void) const
-  { return scalar == 0; }
-
-  bool is_true (void) const { return (scalar != 0); }
-
-  double double_value (bool = false) const { return (double) scalar; }
-
-  int integer_value (bool = false) const { return scalar; }
-
-  Matrix matrix_value (bool = false) const { return Matrix (1, 1, scalar); }
-
-  Complex complex_value (bool = false) const { return scalar; }
-
-  ComplexMatrix complex_matrix_value (bool = false) const
-  { return  ComplexMatrix (1, 1, Complex (scalar)); }
-
-  octave_value gnot (void) const { return octave_value ((double) ! scalar); }
-
-  octave_value uminus (void) const { return new octave_integer (- scalar); }
-
-  octave_value transpose (void) const { return new octave_integer (scalar); }
-
-  octave_value hermitian (void) const { return new octave_integer (scalar); }
-
-  void increment (void) { ++scalar; }
-
-  void decrement (void) { --scalar; }
-
-  void print (std::ostream& os, bool pr_as_read_syntax = false) const;
-
-private:
-
-  int scalar;
-
-  DECLARE_OCTAVE_ALLOCATOR
-
-  DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA
-};
-
-void
-octave_integer::print (std::ostream& os, bool pr_as_read_syntax) const
-{
-  os << scalar;
-  // octave_print_internal (os, scalar, pr_as_read_syntax);
-}
-
-#ifdef DEFUNOP_OP
-#undef DEFUNOP_OP
-#endif
-
-#define DEFUNOP_OP(name, t, op) \
-  UNOPDECL (name, a) \
-  { \
-    CAST_UNOP_ARG (const octave_ ## t&); \
-    return octave_value (new octave_integer (op v.t ## _value ())); \
-  }
-
-DEFUNOP_OP (gnot, integer, !)
-DEFUNOP_OP (uminus, integer, -)
-DEFUNOP_OP (transpose, integer, /* no-op */)
-DEFUNOP_OP (hermitian, integer, /* no-op */)
-
-DEFNCUNOP_METHOD (incr, integer, increment)
-DEFNCUNOP_METHOD (decr, integer, decrement)
-
-#ifdef DEFBINOP_OP
-#undef DEFBINOP_OP
-#endif
-
-#define DEFBINOP_OP(name, t1, t2, op) \
-  BINOPDECL (name, a1, a2) \
-  { \
-    CAST_BINOP_ARGS (const octave_ ## t1&, const octave_ ## t2&); \
-    return octave_value \
-      (new octave_integer (v1.t1 ## _value () op v2.t2 ## _value ())); \
-  }
-
-// integer by integer ops.
-
-DEFBINOP_OP (add, integer, integer, +)
-DEFBINOP_OP (sub, integer, integer, -)
-DEFBINOP_OP (mul, integer, integer, *)
-
-DEFBINOP (div, integer, integer)
-{
-  CAST_BINOP_ARGS (const octave_integer&, const octave_integer&);
-
-  int d = v2.integer_value ();
-
-  if (d == 0)
-    gripe_divide_by_zero ();
-
-  return new octave_integer (v1.integer_value () / d);
-}
-
-
-DEFBINOP (i_s_div, integer, scalar)
-{
-  CAST_BINOP_ARGS (const octave_integer&, const octave_scalar&);
-
-  double d = v2.double_value ();
-
-  if (d == 0.0)
-    gripe_divide_by_zero ();
-
-  return new octave_scalar (v1.double_value () / d);
-}
-
-DEFBINOP (ldiv, integer, integer)
-{
-  CAST_BINOP_ARGS (const octave_integer&, const octave_integer&);
-
-  int d = v1.integer_value ();
-
-  if (d == 0)
-    gripe_divide_by_zero ();
-
-  return new octave_integer (v2.integer_value () / d);
-}
-
-DEFBINOP_OP (lt, integer, integer, <)
-DEFBINOP_OP (le, integer, integer, <=)
-DEFBINOP_OP (eq, integer, integer, ==)
-DEFBINOP_OP (ge, integer, integer, >=)
-DEFBINOP_OP (gt, integer, integer, >)
-DEFBINOP_OP (ne, integer, integer, !=)
-
-DEFBINOP_OP (el_mul, integer, integer, !=)
-
-DEFBINOP (el_div, integer, integer)
-{
-  CAST_BINOP_ARGS (const octave_integer&, const octave_integer&);
-
-  int d = v2.integer_value ();
-
-  if (d == 0)
-    gripe_divide_by_zero ();
-
-  return new octave_integer (v1.integer_value () / d);
-}
-
-DEFBINOP (el_ldiv, integer, integer)
-{
-  CAST_BINOP_ARGS (const octave_integer&, const octave_integer&);
-
-  int d = v1.integer_value ();
-
-  if (d == 0)
-    gripe_divide_by_zero ();
-
-  return new octave_integer (v2.integer_value () / d);
-}
-
-DEFBINOP_OP (el_and, integer, integer, &&)
-DEFBINOP_OP (el_or, integer, integer, ||)
-
-DEFUN_DLD (make_int, args, ,
-           "int_val = make_int (val)\n\
-\n\
-Creates an integer variable from VAL.")
-{
-  static bool type_loaded = false;
-
-  if (! type_loaded)
-    {
-      octave_integer::register_type ();
-      mlock ();
-
-      octave_stdout << "installing integer type at type-id = "
-                    << octave_integer::static_type_id () << "\n";
-
-      INSTALL_UNOP (op_not, octave_integer, gnot);
-      INSTALL_UNOP (op_uminus, octave_integer, uminus);
-      INSTALL_UNOP (op_transpose, octave_integer, transpose);
-      INSTALL_UNOP (op_hermitian, octave_integer, hermitian);
-
-      INSTALL_NCUNOP (op_incr, octave_integer, incr);
-      INSTALL_NCUNOP (op_decr, octave_integer, decr);
-
-      INSTALL_BINOP (op_add, octave_integer, octave_integer, add);
-      INSTALL_BINOP (op_sub, octave_integer, octave_integer, sub);
-      INSTALL_BINOP (op_mul, octave_integer, octave_integer, mul);
-      INSTALL_BINOP (op_div, octave_integer, octave_integer, div);
-      INSTALL_BINOP (op_ldiv, octave_integer, octave_integer, ldiv);
-      INSTALL_BINOP (op_lt, octave_integer, octave_integer, lt);
-      INSTALL_BINOP (op_le, octave_integer, octave_integer, le);
-      INSTALL_BINOP (op_eq, octave_integer, octave_integer, eq);
-      INSTALL_BINOP (op_ge, octave_integer, octave_integer, ge);
-      INSTALL_BINOP (op_gt, octave_integer, octave_integer, gt);
-      INSTALL_BINOP (op_ne, octave_integer, octave_integer, ne);
-      INSTALL_BINOP (op_el_mul, octave_integer, octave_integer, el_mul);
-      INSTALL_BINOP (op_el_div, octave_integer, octave_integer, el_div);
-      INSTALL_BINOP (op_el_ldiv, octave_integer, octave_integer, el_ldiv);
-      INSTALL_BINOP (op_el_and, octave_integer, octave_integer, el_and);
-      INSTALL_BINOP (op_el_or, octave_integer, octave_integer, el_or);
-
-      INSTALL_BINOP (op_div, octave_integer, octave_scalar, i_s_div);
-    }
-
-  octave_value retval;
-
-  if (args.length () == 1)
-    {
-      double d = args(0).double_value ();
-
-      if (! error_state)
-        retval = octave_value (new octave_integer (NINT (d)));
-    }
-  else
-    usage ("make_int");
-
-  return retval;
-}
-
-DEFUN_DLD (doit, args, ,
-           "doit (I)")
-{
-  octave_value_list retval;
-
-  if (args(0).type_id () == octave_integer::static_type_id ())
-    {
-      // At this point, we know we have a handle for an octave_integer
-      // object, so we can peek at the representation and extract the
-      // data.
-
-      const octave_base_value& rep = args(0).get_rep ();
-
-      int my_value = ((const octave_integer&) rep) . integer_value ();
-
-      message ("doit", "your lucky number is: %d", my_value);
-    }
-  else
-    gripe_wrong_type_arg ("doit", args(0));
-
-  return retval;
-}
-
-DEFINE_OCTAVE_ALLOCATOR (octave_integer);
-
-DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA (octave_integer, "integer", "integer");
--- a/examples/mex_demo.c	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-// mex_demo.c -- example of a dynamically linked function for Octave.
-
-// To use this file, your version of Octave must support dynamic
-// linking.  To find out if it does, type the command
-//
-//   octave_config_info ("ENABLE_DYNAMIC_LINKING")
-//
-// at the Octave prompt.  Support for dynamic linking is included if
-// this expression returns the string "yes".
-//
-// To compile this file, type the command
-//
-//   mkoctfile --mex mex_demo.c
-//
-// from within Octave or from the shell prompt.  This will create a file
-// called mex_demo.mex that can be loaded by Octave.  To test the mex_demo.mex
-// file, start Octave and type the command
-//
-// d = mex_demo ("easy as", 1, 2, 3)
-//
-// at the Octave prompt.  Octave should respond by printing
-//
-//   Hello, world!
-//   I have 4 inputs and 1 output
-//   d =  1.2346
-
-// Additional samples of code are in the examples directory of the Octave
-// distribution.  See also the chapter External Code Interface in the
-// documentation.
-
-#include "mex.h"
-
-// Every user function should include "mex.h" which imports the basic set of
-// function prototypes necessary for dynamically linked functions.  In
-// particular, it will declare mexFunction which is used by every function
-// which will be visible to Octave.  A mexFunction is visible in Octave under
-// the name of the source code file without the extension.
-
-// The four arguments to mexFunction are:
-// 1) The number of return arguments (# of left-hand side args).
-// 2) An array of pointers to return arguments.
-// 3) The number of input arguments (# of right-hand side args).
-// 4) An array of pointers to input arguments.
-
-void
-mexFunction (int nlhs, mxArray *plhs[],
-             int nrhs, const mxArray *prhs[])
-{
-  mexPrintf ("Hello, World!\n");
-
-  mexPrintf ("I have %d inputs and %d outputs\n", nrhs, nlhs);
-
-  mxArray *v = mxCreateDoubleMatrix (1, 1, mxREAL);
-  double *data = mxGetPr (v);
-  *data = 1.23456789;
-
-  plhs[0] = v;
-}
--- a/examples/mycell.c	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-#include "mex.h"
-
-void
-mexFunction (int nlhs, mxArray* plhs[],
-             int nrhs, const mxArray* prhs[])
-{
-  mwSize n;
-  mwIndex i;
-
-  if (nrhs != 1 || ! mxIsCell (prhs[0]))
-    mexErrMsgTxt ("ARG1 must be a cell");
-
-  n = mxGetNumberOfElements (prhs[0]);
-  n = (n > nlhs ? nlhs : n);
-
-  for (i = 0; i < n; i++)
-    plhs[i] = mxDuplicateArray (mxGetCell (prhs[0], i));
-}
--- a/examples/myfeval.c	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-#include "mex.h"
-
-void
-mexFunction (int nlhs, mxArray* plhs[],
-             int nrhs, const mxArray* prhs[])
-{
-  char *str;
-
-  mexPrintf ("Starting file myfeval.mex\n");
-
-  mexPrintf ("I have %d inputs and %d outputs\n", nrhs, nlhs);
-
-  if (nrhs < 1 || ! mxIsString (prhs[0]))
-    mexErrMsgTxt ("ARG1 must be a function name");
-
-  str = mxArrayToString (prhs[0]);
-
-  mexPrintf ("I'm going to call the function %s\n", str);
-
-  if (nlhs == 0)
-    nlhs = 1;  // Octave's automatic 'ans' variable
-
-  /* Cast prhs just to get rid of 'const' qualifier and stop compile warning */
-  mexCallMATLAB (nlhs, plhs, nrhs-1, (mxArray**)prhs+1, str);
-
-  mxFree (str);
-}
--- a/examples/myfevalf.f	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-      subroutine mexFunction (nlhs, plhs, nrhs, prhs)
-
-      implicit none
-
-      integer*4 nlhs, nrhs
-
-* The following will need to be integer*8 on 64-bit systems, otherwise
-* these variables won't be large enough to hold pointers...
-      integer*4 plhs(*), prhs(*)
-
-      integer*4 mxIsString, mxGetString, mxGetN, mexCallMATLAB
-      integer*4 status, len
-      character*100 str
-
-      call mexPrintf ('Hello, World!')
-
-      if (nrhs .lt. 1 .or. mxIsString (prhs(1)) .ne. 1) then
-        call mexErrMsgTxt ('function name expected')
-      endif
-
-      len = mxGetN (prhs(1))
-
-      status = mxGetString (prhs(1), str, 100)
-
-      call mexPrintf ('FORTRAN will call the interpreter now')
-
-      status = mexCallMATLAB (nlhs, plhs, nrhs-1, prhs(2), str(1:len))
-
-      return
-      end
--- a/examples/myfunc.c	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-#include "mex.h"
-
-void
-mexFunction (int nlhs, mxArray *plhs[],
-             int nrhs, const mxArray *prhs[])
-{
-  const char *nm;
-
-  nm = mexFunctionName ();
-  mexPrintf ("You called function: %s\n", nm);
-  if (strcmp (nm, "myfunc") == 0)
-    mexPrintf ("This is the principal function\n", nm);
-
-  return;
-}
--- a/examples/myhello.c	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-#include "mex.h"
-
-void
-mexFunction (int nlhs, mxArray *plhs[],
-             int nrhs, const mxArray *prhs[])
-{
-  mexPrintf ("Hello, World!\n");
-
-  mexPrintf ("I have %d inputs and %d outputs\n", nrhs, nlhs);
-}
--- a/examples/mypow2.c	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-#include "mex.h"
-
-void
-mexFunction (int nlhs, mxArray* plhs[],
-             int nrhs, const mxArray* prhs[])
-{
-  mwSize n;
-  mwIndex i;
-  double *vri, *vro;
-
-  if (nrhs != 1 || ! mxIsNumeric (prhs[0]))
-    mexErrMsgTxt ("ARG1 must be a matrix");
-
-  n = mxGetNumberOfElements (prhs[0]);
-  plhs[0] = mxCreateNumericArray (mxGetNumberOfDimensions (prhs[0]),
-                                  mxGetDimensions (prhs[0]),
-                                  mxGetClassID (prhs[0]),
-                                  mxIsComplex (prhs[0]));
-  vri = mxGetPr (prhs[0]);
-  vro = mxGetPr (plhs[0]);
-
-  if (mxIsComplex (prhs[0]))
-    {
-      double *vii, *vio;
-      vii = mxGetPi (prhs[0]);
-      vio = mxGetPi (plhs[0]);
-
-      for (i = 0; i < n; i++)
-        {
-          vro[i] = vri[i] * vri[i] - vii[i] * vii[i];
-          vio[i] = 2 * vri[i] * vii[i];
-        }
-    }
-  else
-    {
-      for (i = 0; i < n; i++)
-        vro[i] = vri[i] * vri[i];
-    }
-}
--- a/examples/myprop.c	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-#include "mex.h"
-
-void
-mexFunction (int nlhs, mxArray* plhs[],
-             int nrhs, const mxArray* prhs[])
-{
-  double handle;
-  char property[256];
-
-  if (nrhs < 2 || nrhs > 3)
-    mexErrMsgTxt ("incorrect number of arguments");
-  if (!mxIsDouble (prhs[0]))
-    mexErrMsgTxt ("handle expected to be a double scalar");
-  if (!mxIsChar (prhs[1]))
-    mexErrMsgTxt ("expected property to be a string");
-
-  handle = mxGetScalar (prhs[0]);
-  mxGetString (prhs[1], property, 256);
-  plhs[0] = mxDuplicateArray (mexGet (handle, property));
-
-  if (nrhs == 3)
-    if (mexSet (handle, property, mxDuplicateArray (prhs[2])))
-      mexErrMsgTxt ("failed to set property");
-}
--- a/examples/myset.c	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-#include "mex.h"
-
-void
-mexFunction (int nlhs, mxArray* plhs[],
-             int nrhs, const mxArray* prhs[])
-{
-  char *str;
-  mxArray *v;
-
-  if (nrhs != 2 || ! mxIsString (prhs[0]))
-    mexErrMsgTxt ("expects symbol name and value");
-
-  str = mxArrayToString (prhs[0]);
-
-  v = mexGetArray (str, "global");
-
-  if (v)
-    {
-      mexPrintf ("%s is a global variable with the following value:\n", str);
-      mexCallMATLAB (0, NULL, 1, &v, "disp");
-    }
-
-  v = mexGetArray (str, "caller");
-
-  if (v)
-    {
-      mexPrintf ("%s is a caller variable with the following value:\n", str);
-      mexCallMATLAB (0, NULL, 1, &v, "disp");
-    }
-
-  // WARNING!! Can't do this in MATLAB!  Must copy variable first.
-  mxSetName (prhs[1], str);
-  mexPutArray (prhs[1], "caller");
-}
--- a/examples/mysparse.c	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,117 +0,0 @@
-#include "mex.h"
-
-void
-mexFunction (int nlhs, mxArray *plhs[],
-             int nrhs, const mxArray *prhs[])
-{
-  mwSize m, n, nz;
-  mxArray *v;
-  mwIndex i;
-  double *pr, *pi;
-  double *pr2, *pi2;
-  mwIndex *ir, *jc;
-  mwIndex *ir2, *jc2;
-
-  if (nrhs != 1 || ! mxIsSparse (prhs[0]))
-    mexErrMsgTxt ("ARG1 must be a sparse matrix");
-
-  m = mxGetM (prhs[0]);
-  n = mxGetN (prhs[0]);
-  nz = mxGetNzmax (prhs[0]);
-
-  if (mxIsComplex (prhs[0]))
-    {
-      mexPrintf ("Matrix is %d-by-%d complex sparse matrix", m, n);
-      mexPrintf (" with %d elements\n", nz);
-
-      pr = mxGetPr (prhs[0]);
-      pi = mxGetPi (prhs[0]);
-      ir = mxGetIr (prhs[0]);
-      jc = mxGetJc (prhs[0]);
-
-      i = n;
-      while (jc[i] == jc[i-1] && i != 0) i--;
-
-      mexPrintf ("last nonzero element (%d, %d) = (%g, %g)\n",
-                 ir[nz-1]+ 1, i, pr[nz-1], pi[nz-1]);
-
-      v = mxCreateSparse (m, n, nz, mxCOMPLEX);
-      pr2 = mxGetPr (v);
-      pi2 = mxGetPi (v);
-      ir2 = mxGetIr (v);
-      jc2 = mxGetJc (v);
-
-      for (i = 0; i < nz; i++)
-        {
-          pr2[i] = 2 * pr[i];
-          pi2[i] = 2 * pi[i];
-          ir2[i] = ir[i];
-        }
-      for (i = 0; i < n + 1; i++)
-        jc2[i] = jc[i];
-
-      if (nlhs > 0)
-        plhs[0] = v;
-    }
-  else if (mxIsLogical (prhs[0]))
-    {
-      mxLogical *pbr, *pbr2;
-      mexPrintf ("Matrix is %d-by-%d logical sparse matrix", m, n);
-      mexPrintf (" with %d elements\n", nz);
-
-      pbr = mxGetLogicals (prhs[0]);
-      ir = mxGetIr (prhs[0]);
-      jc = mxGetJc (prhs[0]);
-
-      i = n;
-      while (jc[i] == jc[i-1] && i != 0) i--;
-      mexPrintf ("last nonzero element (%d, %d) = %d\n",
-                 ir[nz-1]+ 1, i, pbr[nz-1]);
-
-      v = mxCreateSparseLogicalMatrix (m, n, nz);
-      pbr2 = mxGetLogicals (v);
-      ir2 = mxGetIr (v);
-      jc2 = mxGetJc (v);
-
-      for (i = 0; i < nz; i++)
-        {
-          pbr2[i] = pbr[i];
-          ir2[i] = ir[i];
-        }
-      for (i = 0; i < n + 1; i++)
-        jc2[i] = jc[i];
-
-      if (nlhs > 0)
-        plhs[0] = v;
-    }
-  else
-    {
-      mexPrintf ("Matrix is %d-by-%d real sparse matrix", m, n);
-      mexPrintf (" with %d elements\n", nz);
-
-      pr = mxGetPr (prhs[0]);
-      ir = mxGetIr (prhs[0]);
-      jc = mxGetJc (prhs[0]);
-
-      i = n;
-      while (jc[i] == jc[i-1] && i != 0) i--;
-      mexPrintf ("last nonzero element (%d, %d) = %g\n",
-                 ir[nz-1]+ 1, i, pr[nz-1]);
-
-      v = mxCreateSparse (m, n, nz, mxREAL);
-      pr2 = mxGetPr (v);
-      ir2 = mxGetIr (v);
-      jc2 = mxGetJc (v);
-
-      for (i = 0; i < nz; i++)
-        {
-          pr2[i] = 2 * pr[i];
-          ir2[i] = ir[i];
-        }
-      for (i = 0; i < n + 1; i++)
-        jc2[i] = jc[i];
-
-      if (nlhs > 0)
-        plhs[0] = v;
-    }
-}
--- a/examples/mystring.c	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-#include <string.h>
-#include "mex.h"
-
-void
-mexFunction (int nlhs, mxArray *plhs[],
-             int nrhs, const mxArray *prhs[])
-{
-  mwSize m, n;
-  mwIndex i, j;
-  mxChar *pi, *po;
-
-  if (nrhs != 1 || ! mxIsChar (prhs[0])
-      || mxGetNumberOfDimensions (prhs[0]) > 2)
-    mexErrMsgTxt ("ARG1 must be a char matrix");
-
-  m = mxGetM (prhs[0]);
-  n = mxGetN (prhs[0]);
-  pi = mxGetChars (prhs[0]);
-  plhs[0] = mxCreateNumericMatrix (m, n, mxCHAR_CLASS, mxREAL);
-  po = mxGetChars (plhs[0]);
-
-  for (j = 0; j < n; j++)
-    for (i = 0; i < m; i++)
-      po[j*m + m - 1 - i] = pi[j*m + i];
-}
--- a/examples/mystruct.c	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-#include "mex.h"
-
-void
-mexFunction (int nlhs, mxArray* plhs[],
-             int nrhs, const mxArray* prhs[])
-{
-  int i;
-  mwIndex j;
-  mxArray *v;
-  const char *keys[] = { "this", "that" };
-
-  if (nrhs != 1 || ! mxIsStruct (prhs[0]))
-    mexErrMsgTxt ("expects struct");
-
-  for (i = 0; i < mxGetNumberOfFields (prhs[0]); i++)
-    for (j = 0; j < mxGetNumberOfElements (prhs[0]); j++)
-      {
-        mexPrintf ("field %s(%d) = ", mxGetFieldNameByNumber (prhs[0], i), j);
-        v = mxGetFieldByNumber (prhs[0], j, i);
-        mexCallMATLAB (0, NULL, 1, &v, "disp");
-      }
-
-  v = mxCreateStructMatrix (2, 2, 2, keys);
-
-  mxSetFieldByNumber (v, 0, 0, mxCreateString ("this1"));
-  mxSetFieldByNumber (v, 0, 1, mxCreateString ("that1"));
-  mxSetFieldByNumber (v, 1, 0, mxCreateString ("this2"));
-  mxSetFieldByNumber (v, 1, 1, mxCreateString ("that2"));
-  mxSetFieldByNumber (v, 2, 0, mxCreateString ("this3"));
-  mxSetFieldByNumber (v, 2, 1, mxCreateString ("that3"));
-  mxSetFieldByNumber (v, 3, 0, mxCreateString ("this4"));
-  mxSetFieldByNumber (v, 3, 1, mxCreateString ("that4"));
-
-  if (nlhs)
-    plhs[0] = v;
-}
--- a/examples/oct_demo.cc	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,84 +0,0 @@
-// oct_demo.cc -- example of a dynamically linked function for Octave.
-
-// To use this file, your version of Octave must support dynamic
-// linking.  To find out if it does, type the command
-//
-//   octave_config_info ("ENABLE_DYNAMIC_LINKING")
-//
-// at the Octave prompt.  Support for dynamic linking is included if
-// this expression returns the string "yes".
-//
-// To compile this file, type the command
-//
-//   mkoctfile oct_demo.cc
-//
-// from within Octave or from the shell prompt.  This will create a file
-// called oct_demo.oct that can be loaded by Octave.  To test the
-// oct_demo.oct file, start Octave and type the command
-//
-//   oct_demo ("easy as", 1, 2, 3)
-//
-// at the Octave prompt.  Octave should respond by printing
-//
-//   Hello, world!
-//   easy as
-//   1
-//   2
-//   3
-//   ans = 3
-
-// Additional samples of real dynamically loaded functions are available in
-// the files of the libinterp/dldfcn directory of the Octave distribution.
-// See also the chapter External Code Interface in the documentation.
-
-#include <iostream>
-
-#include <octave/oct.h>
-
-// Every user function should include <octave/oct.h> which imports the
-// basic set of Octave header files required.  In particular this will define
-// the DEFUN_DLD macro (defun-dld.h) which is used for every user function
-// that is visible to Octave.
-
-// The four arguments to the DEFUN_DLD macro are:
-// 1) The function name as seen in Octave.
-// 2) The variable to hold any inputs (of type octave_value_list)
-// 3) The number of output arguments
-// 4) A string to use as help text if 'help <function_name>' is entered.
-//
-// Note below that the third parameter (nargout) of DEFUN_DLD is not used,
-// so it is omitted from the list of arguments in order to avoid a warning
-// from gcc about an unused function parameter.
-
-DEFUN_DLD (oct_demo, args, ,
-           "[...] = oct_demo (...)\n\
-\n\
-Print a greeting followed by the values of all the arguments passed.\n\
-Return all arguments in reverse order.")
-{
-  // The list of values to return.  See the declaration in oct-obj.h
-
-  octave_value_list retval;
-
-  // This stream is normally connected to the pager.
-
-  octave_stdout << "Hello, world!\n";
-
-  // The inputs to this function are available in args.
-
-  int nargin = args.length ();
-
-  // The octave_value_list class is a zero-based array of octave_value objects.
-  // The declaration for the octave_value class is in the file ov.h.
-  // The print() method will send its output to octave_stdout,
-  // so it will also end up going through the pager.
-
-  for (int i = 0; i < nargin; i++)
-    {
-      octave_value tmp = args(i);
-      tmp.print (octave_stdout);
-      retval(nargin-i-1) = tmp;
-    }
-
-  return retval;
-}
--- a/examples/oregonator.cc	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-#include <octave/oct.h>
-
-DEFUN_DLD (oregonator, args, ,
-           "The `oregonator'.\n\
-\n\
-Reference:\n\
-\n\
-  Oscillations in chemical systems.  IV.  Limit cycle behavior in a\n\
-  model of a real chemical reaction. Richard J. Field and Richard\n\
-  M. Noyes, The Journal of Chemical Physics, Volume 60 Number 5,\n\
-  March 1974.")
-{
-  ColumnVector dx (3);
-
-  ColumnVector x (args(0).vector_value ());
-
-  dx(0) = 77.27 * (x(1) - x(0)*x(1) + x(0) - 8.375e-06*pow (x(0), 2.0));
-  dx(1) = (x(2) - x(0)*x(1) - x(1)) / 77.27;
-  dx(2) = 0.161*(x(0) - x(2));
-
-  return octave_value (dx);
-}
--- a/examples/oregonator.m	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-## The `oregonator'.
-##
-## Reference:
-##
-##   Oscillations in chemical systems.  IV.  Limit cycle behavior in a
-##   model of a real chemical reaction. Richard J. Field and Richard
-##   M. Noyes, The Journal of Chemical Physics, Volume 60 Number 5,
-##   March 1974.
-
-function dx = oregonator (x, t)
-
-  dx = zeros (3, 1);
-
-  dx(1) = 77.27*(x(2) - x(1)*x(2) + x(1) - 8.375e-06*x(1)^2);
-  dx(2) = (x(3) - x(1)*x(2) - x(2)) / 77.27;
-  dx(3) = 0.161*(x(1) - x(3));
-
-end
--- a/examples/paramdemo.cc	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-#include <octave/oct.h>
-
-DEFUN_DLD (paramdemo, args, nargout, "Parameter Check Demo")
-{
-  octave_value retval;
-  int nargin = args.length ();
-
-  if (nargin != 1)
-    print_usage ();
-  else if (nargout != 0)
-    error ("paramdemo: OUTPUT argument required");
-  else
-    {
-      NDArray m = args(0).array_value ();
-      double min_val = -10.0;
-      double max_val = 10.0;
-      octave_stdout << "Properties of input array:\n";
-      if (m.any_element_is_negative ())
-        octave_stdout << "  includes negative values\n";
-      if (m.any_element_is_inf_or_nan ())
-        octave_stdout << "  includes Inf or NaN values\n";
-      if (m.any_element_not_one_or_zero ())
-        octave_stdout << "  includes other values than 1 and 0\n";
-      if (m.all_elements_are_int_or_inf_or_nan ())
-        octave_stdout << "  includes only int, Inf or NaN values\n";
-      if (m.all_integers (min_val, max_val))
-        octave_stdout << "  includes only integers in [-10,10]\n";
-    }
-  return retval;
-}
--- a/examples/standalone.cc	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-#include <iostream>
-#include <octave/oct.h>
-
-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;
-}
--- a/examples/standalonebuiltin.cc	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-#include <iostream>
-#include <octave/oct.h>
-#include <octave/builtin-defun-decls.h>
-
-int
-main (void)
-{
-  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 << "This is a matrix:" << std::endl 
-            << a_matrix            << std::endl;
-
-  octave_value_list in;
-  in(0) = a_matrix;
-
-  octave_value_list out = Fnorm (in, 1);
-  double norm_of_the_matrix = out(0).double_value ();
-
-  std::cout << "This is the norm of the matrix:" << std::endl 
-            << norm_of_the_matrix                << std::endl;
-  
-  return 0;
-}
--- a/examples/stringdemo.cc	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-#include <octave/oct.h>
-
-DEFUN_DLD (stringdemo, args, , "String Demo")
-{
-  octave_value_list retval;
-  int nargin = args.length ();
-
-  if (nargin != 1)
-    print_usage ();
-  else
-    {
-      charMatrix ch = args(0).char_matrix_value ();
-
-      if (! error_state)
-        {
-          retval(1) = octave_value (ch, '\'');  // Single Quote String
-
-          octave_idx_type nr = ch.rows ();
-          for (octave_idx_type i = 0; i < nr / 2; i++)
-            {
-              std::string tmp = ch.row_as_string (i);
-              ch.insert (ch.row_as_string (nr-i-1).c_str (), i, 0);
-              ch.insert (tmp.c_str (), nr-i-1, 0);
-            }
-          retval(0) = octave_value (ch, '"');  // Double Quote String
-        }
-    }
-  return retval;
-}
--- a/examples/structdemo.cc	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-#include <octave/oct.h>
-#include <octave/ov-struct.h>
-
-DEFUN_DLD (structdemo, args, , "Struct Demo")
-{
-  octave_value retval;
-  int nargin = args.length ();
-
-  if (args.length () == 2)
-    {
-      octave_scalar_map arg0 = args(0).scalar_map_value ();
-      //octave_map arg0 = args(0).map_value ();
-
-      if (! error_state)
-        {
-          std::string arg1 = args(1).string_value ();
-
-          if (! error_state)
-            {
-              octave_value tmp = arg0.contents (arg1);
-              //octave_value tmp = arg0.contents (arg1)(0);
-
-              if (tmp.is_defined ())
-                {
-                  octave_scalar_map st;
-
-                  st.assign ("selected", tmp);
-
-                  retval = octave_value (st);
-                }
-              else
-                error ("structdemo: struct does not have a field named '%s'\n",
-                       arg1.c_str ());
-            }
-          else
-            error ("structdemo: ARG2 must be a character string");
-        }
-      else
-        error ("structdemo: ARG1 must be a struct");
-    }
-  else
-    print_usage ();
-
-  return retval;
-}
--- a/examples/unwinddemo.cc	Tue Aug 19 05:41:06 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-#include <octave/oct.h>
-#include <octave/unwind-prot.h>
-
-void
-my_err_handler (const char *fmt, ...)
-{
-  // Do nothing!!
-}
-
-DEFUN_DLD (unwinddemo, args, nargout, "Unwind Demo")
-{
-  octave_value retval;
-  int nargin = args.length ();
-
-  if (nargin < 2)
-    print_usage ();
-  else
-    {
-      NDArray a = args(0).array_value ();
-      NDArray b = args(1).array_value ();
-
-      if (! error_state)
-        {
-          // Declare unwind_protect frame which lasts as long as
-          // the variable frame has scope.
-          unwind_protect frame;
-          frame.protect_var (current_liboctave_warning_handler);
-
-          set_liboctave_warning_handler (my_err_handler);
-          retval = octave_value (quotient (a, b));
-        }
-    }
-  return retval;
-}