diff src/DLD-FUNCTIONS/filter.cc @ 3088:f33738510eb2

[project @ 1997-10-02 06:38:36 by jwe]
author jwe
date Thu, 02 Oct 1997 06:41:15 +0000
parents 38de16594cb4
children d12c312d1cfb
line wrap: on
line diff
--- a/src/DLD-FUNCTIONS/filter.cc	Thu Sep 25 16:51:17 1997 +0000
+++ b/src/DLD-FUNCTIONS/filter.cc	Thu Oct 02 06:41:15 1997 +0000
@@ -193,9 +193,31 @@
 
       if (! error_state)
 	{
+	  ComplexColumnVector si;
+
 	  if (nargin == 3)
 	    {
-	      ComplexColumnVector y (filter (b, a, x));
+	      int a_len = a.length ();
+	      int b_len = b.length ();
+
+	      int si_len = (a_len > b_len ? a_len : b_len) - 1;
+
+	      si.resize (si_len, 0.0);
+	    }
+	  else
+	    si = args(3).complex_vector_value ();
+
+	  if (! error_state)
+	    {
+	      ComplexColumnVector y (filter (b, a, x, si));
+
+	      if (nargout == 2)
+		{
+		  if (si_is_vector)
+		    retval (1) = octave_value (si, (args(3).columns () == 1));
+		  else
+		    retval (1) = si;
+		}
 
 	      if (x_is_vector)
 		retval (0) = octave_value (y, (args(2).columns () == 1));
@@ -203,26 +225,7 @@
 		retval (0) = y;
 	    }
 	  else
-	    {
-	      ComplexColumnVector si = args(3).complex_vector_value ();
-
-	      if (! error_state)
-		{
-		  ComplexColumnVector y (filter (b, a, x, si));
-
-		  if (si_is_vector)
-		    retval (1) = octave_value (si, (args(3).columns () == 1));
-		  else
-		    retval (1) = si;
-
-		  if (x_is_vector)
-		    retval (0) = octave_value (y, (args(2).columns () == 1));
-		  else
-		    retval (0) = y;
-		}
-	      else
-		error (errmsg);
-	    }
+	    error (errmsg);
 	}
       else
 	error (errmsg);
@@ -235,9 +238,31 @@
 
       if (! error_state)
 	{
+	  ColumnVector si;
+
 	  if (nargin == 3)
 	    {
-	      ColumnVector y (filter (b, a, x));
+	      int a_len = a.length ();
+	      int b_len = b.length ();
+
+	      int si_len = (a_len > b_len ? a_len : b_len) - 1;
+
+	      si.resize (si_len, 0.0);
+	    }
+	  else
+	    si = args(3).vector_value ();
+
+	  if (! error_state)
+	    {
+	      ColumnVector y (filter (b, a, x, si));
+
+	      if (nargout == 2)
+		{
+		  if (si_is_vector)
+		    retval (1) = octave_value (si, (args(3).columns () == 1));
+		  else
+		    retval (1) = si;
+		}
 
 	      if (x_is_vector)
 		retval (0) = octave_value (y, (args(2).columns () == 1));
@@ -245,26 +270,7 @@
 		retval (0) = y;
 	    }
 	  else
-	    {
-	      ColumnVector si = args(3).vector_value ();
-
-	      if (! error_state)
-		{
-		  ColumnVector y (filter (b, a, x, si));
-
-		  if (si_is_vector)
-		    retval (1) = octave_value (si, (args(3).columns () == 1));
-		  else
-		    retval (1) = si;
-
-		  if (x_is_vector)
-		    retval (0) = octave_value (y, (args(2).columns () == 1));
-		  else
-		    retval (0) = y;
-		}
-	      else
-		error (errmsg);
-	    }
+	    error (errmsg);
 	}
       else
 	error (errmsg);