changeset 9284:567e3e4ab74d

fix up examples/@polynomial
author Robert T. Short <octave@phaselockedsystems.com>
date Sun, 31 May 2009 21:11:31 -0700
parents 38ad8c99d6a2
children 226f6d001ee2
files ChangeLog examples/@polynomial/Makefile.in examples/@polynomial/display.m examples/@polynomial/end.m examples/@polynomial/get.m examples/@polynomial/mtimes.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
diffstat 13 files changed, 74 insertions(+), 44 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Fri May 29 17:32:08 2009 -0400
+++ b/ChangeLog	Sun May 31 21:11:31 2009 -0700
@@ -1,3 +1,10 @@
+2009-06-02  Robert T. Short  <octave@phaselockedsystems.com>
+
+	* examples/@polynomial: Remove tabs from all functions so
+	documentation looks right.  Fix a bunch of methods
+	that didn't work.  Add a method referred to in the docs
+	that didn't exist.
+
 2009-05-26  John W. Eaton  <jwe@octave.org>
 
 	* src/dirfns.cc (Fpathsep): Allow path separator to be set.
--- a/examples/@polynomial/Makefile.in	Fri May 29 17:32:08 2009 -0400
+++ b/examples/@polynomial/Makefile.in	Sun May 31 21:11:31 2009 -0700
@@ -51,6 +51,7 @@
   polynomial.m \
   polynomial_superiorto.m \
   polyval.m \
+  roots.m \
   set.m \
   subsasgn.m \
   subsref.m
--- a/examples/@polynomial/display.m	Fri May 29 17:32:08 2009 -0400
+++ b/examples/@polynomial/display.m	Sun May 31 21:11:31 2009 -0700
@@ -5,23 +5,23 @@
   for i = 1 : length (a);
     if (a(i) != 0)
       if (first)
-	first = false;
+        first = false;
       elseif (a(i) > 0)
-	fprintf (" +");
+        fprintf (" +");
       endif
       if (a(i) < 0)
-	fprintf (" -");
+        fprintf (" -");
       endif
       if (i == 1)
-	fprintf (" %g", abs (a(i)));
+        fprintf (" %g", abs (a(i)));
       elseif (abs(a(i)) != 1)
-	fprintf (" %g *", abs (a(i)));
+        fprintf (" %g *", abs (a(i)));
       endif
       if (i > 1)
-	fprintf (" X");
+        fprintf (" X");
       endif
       if (i > 2)
-	fprintf (" ^ %d", i - 1);
+        fprintf (" ^ %d", i - 1);
       endif
     endif
   endfor
@@ -30,4 +30,3 @@
   endif
   fprintf("\n");
 endfunction
-
--- a/examples/@polynomial/end.m	Fri May 29 17:32:08 2009 -0400
+++ b/examples/@polynomial/end.m	Sun May 31 21:11:31 2009 -0700
@@ -1,11 +1,13 @@
 function r = end (obj, index_pos, num_indices)
-  dv = size (obj.x);
-  for i = (num_indices + 1) : length (dv)
-    dv(num_indices) *= dv(i);
-  endfor
-  if (index_pos <= length (dv))
-    r = dv (index_pos);
-  elseif
-    r = 1;
+
+  if ( num_indices!=1 )
+    error ("polynomial object may only have one index")
   endif
+  
+  if ( (index_pos<1) || (index_pos>length(obj.poly)) )
+    error ("subscript out of range")
+  end
+
+  r = length(obj.poly);
+
 endfunction
--- a/examples/@polynomial/get.m	Fri May 29 17:32:08 2009 -0400
+++ b/examples/@polynomial/get.m	Sun May 31 21:11:31 2009 -0700
@@ -4,10 +4,10 @@
   elseif (nargin == 2)
     if (ischar (f))
       switch (f)
-	case "poly"
-	  s = p.poly;
-	otherwise
-	  error ("get: invalid property %s", f);
+        case "poly"
+          s = p.poly;
+        otherwise
+          error ("get: invalid property %s", f);
       endswitch
     else
       error ("get: expecting the property to be a string");
--- a/examples/@polynomial/mtimes.m	Fri May 29 17:32:08 2009 -0400
+++ b/examples/@polynomial/mtimes.m	Sun May 31 21:11:31 2009 -0700
@@ -1,5 +1,3 @@
 function y = mtimes (a, b)
-  ap = double (a);
-  bp = double (b);
-  y = polynomial (filter (ap, 1, [bp(:).', zeros(1, length(bp) - 1)]));
+  y = polynomial (conv (double(a),double(b)));
 endfunction
\ No newline at end of file
--- a/examples/@polynomial/polynomial.m	Fri May 29 17:32:08 2009 -0400
+++ b/examples/@polynomial/polynomial.m	Sun May 31 21:11:31 2009 -0700
@@ -6,23 +6,24 @@
 ## @example
 ## a0 + a1 * x + a2 * x^2 + @dots{} + an * x^n
 ## @end example
+##
+## from a vector of coefficients [a0 a1 a2 ... an].
 ## @end deftypefn
 
 function p = polynomial (a)
   if (nargin == 0)
-    p.poly = [];
+    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.poly = a(:).';
       p = class (p, "polynomial");
     else
-      error ("polynomial: expecting real or complex vector");
+      error ("polynomial: expecting real vector");
     endif
   else
     print_usage ();
   endif
-  superiorto ("double");
 endfunction
--- a/examples/@polynomial/polynomial_superiorto.m	Fri May 29 17:32:08 2009 -0400
+++ b/examples/@polynomial/polynomial_superiorto.m	Sun May 31 21:11:31 2009 -0700
@@ -1,15 +1,27 @@
+## -*- texinfo -*-
+## @deftypefn {Function File} {} polynomial ()
+## @deftypefnx {Function File} {} polynomial (@var{a})
+## Creates a polynomial object representing the polynomial
+##
+## @example
+## a0 + a1 * x + a2 * x^2 + @dots{} + an * x^n
+## @end example
+##
+## from a vector of coefficients [a0 a1 a2 ... an].
+## @end deftypefn
+
 function p = polynomial (a)
   if (nargin == 0)
-    p.poly = [];
+    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.poly = a(:).';
       p = class (p, "polynomial");
     else
-      error ("polynomial: expecting real or complex vector");
+      error ("polynomial: expecting real vector");
     endif
   else
     print_usage ();
--- a/examples/@polynomial/polyval.m	Fri May 29 17:32:08 2009 -0400
+++ b/examples/@polynomial/polyval.m	Sun May 31 21:11:31 2009 -0700
@@ -1,7 +1,7 @@
 function [y, dy] = polyval (p, varargin)
   if (nargout == 2)
-    [y, dy] = polyval (p.poly, varargin{:});
+    [y, dy] = polyval (fliplr(p.poly), varargin{:});
   else
-    y = polyval (p.poly, varargin{:});
+    y = polyval (fliplr(p.poly), varargin{:});
   endif
 endfunction
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/@polynomial/roots.m	Sun May 31 21:11:31 2009 -0700
@@ -0,0 +1,3 @@
+function y = roots (p)
+  y = roots(fliplr(p.poly));
+endfunction
\ No newline at end of file
--- a/examples/@polynomial/set.m	Fri May 29 17:32:08 2009 -0400
+++ b/examples/@polynomial/set.m	Sun May 31 21:11:31 2009 -0700
@@ -9,12 +9,12 @@
     varargin(1:2) = [];
     if (ischar (prop) && strcmp (prop, "poly"))
       if (isvector (val) && isreal (val))
-	s.poly = val(:)';
+        s.poly = val(:).';
       else
-	error ("set: expecting the value to be a real vector");
+        error ("set: expecting the value to be a real vector");
       endif
     else
       error ("set: invalid property of polynomial class");
     endif
   endwhile
-endfunction
\ No newline at end of file
+endfunction
--- a/examples/@polynomial/subsasgn.m	Fri May 29 17:32:08 2009 -0400
+++ b/examples/@polynomial/subsasgn.m	Sun May 31 21:11:31 2009 -0700
@@ -1,12 +1,20 @@
-function s = subsasgn (s, index, val)
+function p = subsasgn (p, index, val)
+  index.type
+  index.subs
   switch (index.type)
     case "()"
-      if (! isnumeric (val) || iscomplex(val) ||any (val(:)) >= 2.^ s.m || 
-	  any (val(:)) < 0 || any (val(:) != fix(val(:))))
-	error ("subsasgn: value must be an array of real integers between 0 and 2.^m - 1");
+      ind = index.subs;
+      if ( (any (ind{:}>length(p.poly)))
+        || (any (ind{:}<0)) )
+        error ("subsasgn: subscript out of range");
       endif
-      s.x = subsasgn (s.x, index, double (val));
+      p.poly(ind{:}) = val;
     case "."
-      error ("subsagn: can not set properties of a galois field directly");
+      fld = index.subs;
+      if (strcmp (fld, "poly"))
+        p.poly = val;
+      else
+        error ("@polynomial/subsref: invalid property \"%s\"", fld);
+      endif
   endswitch
 endfunction
--- a/examples/@polynomial/subsref.m	Fri May 29 17:32:08 2009 -0400
+++ b/examples/@polynomial/subsref.m	Sun May 31 21:11:31 2009 -0700
@@ -9,10 +9,9 @@
     case "."
       fld = s.subs;
       if (strcmp (fld, "poly"))
-	b = a.poly;
+        b = a.poly;
       else
-	error ("@polynomial/subsref: invalid property \"%s\"",
-	       fld);
+        error ("@polynomial/subsref: invalid property \"%s\"", fld);
       endif
   endswitch
 endfunction