# HG changeset patch # User Jaroslav Hajek # Date 1226231982 -3600 # Node ID 5fe0f4dfdbecf82cac0fa6112ab2f8e99b13167c # Parent ec969f3b8955140a79ee94c626ccdbb780daf61e use std::vector as a simple linear container in oct-norm.cc to avoid problems with instantiating Array diff --git a/liboctave/ChangeLog b/liboctave/ChangeLog --- a/liboctave/ChangeLog +++ b/liboctave/ChangeLog @@ -1,3 +1,13 @@ +2008-11-09 Jaroslav Hajek + + * oct-norm.cc: Don't include Array.cc. + (column_norms (const MArray2&, ...)): Use std::vector instead of Array for + accumulator containers. Use empty constructor instead of + Array::resize. + (row_norms (const MArray2&, ...)): Dtto. + (column_norms (const MSparse2&, ...)): Dtto. + (row_norms (const MSparse2&, ...)): Dtto. + 2008-10-31 Jaroslav Hajek * oct-norm.h: New header file. diff --git a/liboctave/oct-norm.cc b/liboctave/oct-norm.cc --- a/liboctave/oct-norm.cc +++ b/liboctave/oct-norm.cc @@ -31,12 +31,12 @@ #include #include +#include #include "oct-cmplx.h" #include "lo-error.h" #include "lo-ieee.h" #include "Array.h" -#include "Array.cc" #include "Array-util.h" #include "CMatrix.h" #include "dMatrix.h" @@ -224,7 +224,7 @@ template void column_norms (const MArray2& m, MArray& res, ACC acc) { - res.resize (m.columns ()); + res = MArray2 (1, m.columns ()); for (octave_idx_type j = 0; j < m.columns (); j++) { ACC accj = acc; @@ -238,23 +238,23 @@ template void row_norms (const MArray2& m, MArray& res, ACC acc) { - res.resize (m.rows ()); - Array acci (m.rows (), acc); + res = MArray2 (m.rows (), 1); + std::vector acci (m.rows (), acc); for (octave_idx_type j = 0; j < m.columns (); j++) { for (octave_idx_type i = 0; i < m.rows (); i++) - acci.xelem (i).accum (m(i, j)); + acci[i].accum (m(i, j)); } for (octave_idx_type i = 0; i < m.rows (); i++) - res.xelem (i) = acci(i); + res.xelem (i) = acci[i]; } // sparse versions template void column_norms (const MSparse& m, MArray& res, ACC acc) { - res.resize (m.columns ()); + res = MArray2 (1, m.columns ()); for (octave_idx_type j = 0; j < m.columns (); j++) { ACC accj = acc; @@ -268,12 +268,12 @@ template void row_norms (const MSparse& m, MArray& res, ACC acc) { - res.resize (m.rows ()); - Array acci (m.rows (), acc); + res = MArray2 (m.rows (), 1); + std::vector acci (m.rows (), acc); for (octave_idx_type j = 0; j < m.columns (); j++) { for (octave_idx_type k = m.cidx (j); k < m.cidx (j+1); k++) - acci(m.ridx (k)).accum (m.data (k)); + acci[m.ridx (k)].accum (m.data (k)); } for (octave_idx_type i = 0; i < m.rows (); i++)