diff liboctave/Range.cc @ 4810:72a6d410a14a

[project @ 2004-03-03 18:49:39 by jwe]
author jwe
date Wed, 03 Mar 2004 18:49:39 +0000
parents 62f2fb593455
children 198f3712c692
line wrap: on
line diff
--- a/liboctave/Range.cc	Tue Mar 02 17:40:08 2004 +0000
+++ b/liboctave/Range.cc	Wed Mar 03 18:49:39 2004 +0000
@@ -35,7 +35,6 @@
 #include <iostream>
 
 #include "Range.h"
-#include "dMatrix.h"
 #include "lo-mappers.h"
 #include "lo-utils.h"
 
@@ -53,15 +52,13 @@
 Matrix
 Range::matrix_value (void) const
 {
-  Matrix retval;
-
-  if (rng_nelem > 0)
+  if (rng_nelem > 0 && cache.rows() == 0)
     {
-      retval.resize (1, rng_nelem);
+      cache.resize (1, rng_nelem);
       double b = rng_base;
       double increment = rng_inc;
       for (int i = 0; i < rng_nelem; i++)
-	retval(i) = b + i * increment;
+	cache(i) = b + i * increment;
 
       // On some machines (x86 with extended precision floating point
       // arithmetic, for example) it is possible that we can overshoot
@@ -69,14 +66,15 @@
       // we were very careful in our calculation of the number of
       // elements.
 
-      if ((rng_inc > 0 && retval(rng_nelem-1) > rng_limit)
-	  || (rng_inc < 0 && retval(rng_nelem-1) < rng_limit))
-	retval(rng_nelem-1) = rng_limit;
+      if ((rng_inc > 0 && cache(rng_nelem-1) > rng_limit)
+	  || (rng_inc < 0 && cache(rng_nelem-1) < rng_limit))
+	cache(rng_nelem-1) = rng_limit;
     }
 
-  return retval;
+  return cache;
 }
 
+
 // NOTE: max and min only return useful values if nelem > 0.
 
 double
@@ -131,18 +129,10 @@
       rng_base = min ();
       rng_limit = tmp;
       rng_inc = -rng_inc;
+      cache.resize (0,0);
     }
 }
 
-void
-Range::print_range (void)
-{
-  std::cerr << "Range: rng_base = " << rng_base
-	    << " rng_limit " << rng_limit
-	    << " rng_inc " << rng_inc
-	    << " rng_nelem " << rng_nelem << "\n";
-}
-
 std::ostream&
 operator << (std::ostream& os, const Range& a)
 {