# HG changeset patch # User carandraug # Date 1388805206 0 # Node ID fda15ea4442975da77fffdaf6132809f6d9435fb # Parent bf7238a29d2fc0cbe0fc1a03488d07e2cc96e4e9 Fix for deprecated 1D Arrays. * grad-ops.cc, oc-grad.cc: using a single integer to construct a 1D Array has been deprecated with Octave 3.8.0. Fixed by using ColumnVector or idx_vector as appropriate. Some style fixes by replacing hard tabs with spaces, and indentation following Octave coding guidelines. diff -r bf7238a29d2f -r fda15ea44429 extra/ad/src/grad-ops.cc --- a/extra/ad/src/grad-ops.cc Sat Jan 04 02:27:11 2014 +0000 +++ b/extra/ad/src/grad-ops.cc Sat Jan 04 03:13:26 2014 +0000 @@ -20,7 +20,7 @@ #include #include #include -#include +#include #include #include #include @@ -127,27 +127,26 @@ octave_value re (const octave_value& v) { return v.is_real_type () ? v : feval ("real", v, 1)(0); } -static inline +static inline octave_value sigma (octave_idx_type nr, octave_idx_type nc) { - if (nr == 1 || nc == 1) - return octave_value::magic_colon_t; + if (nr == 1 || nc == 1) + return octave_value::magic_colon_t; - NDArray a = - NDArray (dim_vector (nr*nc)); + ColumnVector a (nr*nc); - octave_idx_type k, v, i, j; - k = 0; - for (i = 1; i <= nr; i++) - { - v = i; - for (j = 0; j < nc; j++) - { - a(k++) = v; - v += nr; - } - } - return octave_value (a); + octave_idx_type k, v, i, j; + k = 0; + for (i = 1; i <= nr; i++) + { + v = i; + for (j = 0; j < nc; j++) + { + a(k++) = v; + v += nr; + } + } + return octave_value (a); } /* unary gradient ops */ @@ -527,53 +526,49 @@ static inline octave_value add_g_mx (const octave_gradient& g, const octave_value& m) { - if (g.is_scalar_type ()) - { - cperm(1) = NDArray (dim_vector (m.numel ()), 1.0); - return new octave_gradient ( - g.x () + m, - octave_value (g.dx ()).do_index_op (cperm)); - } - return new octave_gradient (g.x () + m, g.dx ()); + if (g.is_scalar_type ()) + { + cperm(1) = ColumnVector (m.numel (), 1.0); + return new octave_gradient ( + g.x () + m, octave_value (g.dx ()).do_index_op (cperm)); + } + return new octave_gradient (g.x () + m, g.dx ()); } static inline octave_value add_mx_g (const octave_value& m, const octave_gradient& g) -{ - if (g.is_scalar_type ()) - { - cperm(1) = NDArray (dim_vector (m.numel ()), 1.0); - return new octave_gradient ( - m + g.x (), - octave_value (g.dx ()).do_index_op (cperm)); - } - return new octave_gradient (m + g.x (), g.dx ()); +{ + if (g.is_scalar_type ()) + { + cperm(1) = ColumnVector (m.numel (), 1.0); + return new octave_gradient ( + m + g.x (), octave_value (g.dx ()).do_index_op (cperm)); + } + return new octave_gradient (m + g.x (), g.dx ()); } static inline octave_value sub_g_mx (const octave_gradient& g, const octave_value& m) { - if (g.is_scalar_type ()) - { - cperm(1) = NDArray (dim_vector (m.numel ()), 1.0); - return new octave_gradient ( - g.x () - m, - octave_value (g.dx ()).do_index_op (cperm)); - } - return new octave_gradient (g.x () - m, g.dx ()); + if (g.is_scalar_type ()) + { + cperm(1) = ColumnVector (m.numel (), 1.0); + return new octave_gradient ( + g.x () - m, octave_value (g.dx ()).do_index_op (cperm)); + } + return new octave_gradient (g.x () - m, g.dx ()); } static inline octave_value sub_mx_g (const octave_value& m, const octave_gradient& g) -{ - if (g.is_scalar_type ()) - { - cperm(1) = NDArray (dim_vector (m.numel ()), 1.0); - return new octave_gradient ( - m - g.x (), - octave_value (- g.dx ()).do_index_op (cperm)); - } - return new octave_gradient (m - g.x (), - g.dx ()); +{ + if (g.is_scalar_type ()) + { + cperm(1) = ColumnVector (m.numel (), 1.0); + return new octave_gradient ( + m - g.x (), octave_value (- g.dx ()).do_index_op (cperm)); + } + return new octave_gradient (m - g.x (), - g.dx ()); } DEFBOP_GX (add, matrix, add_g_mx) @@ -1813,33 +1808,34 @@ DEFCATOP (g_g, octave_gradient, octave_gradient) { - CAST_BINOP_ARGS (const octave_gradient&, const octave_gradient&); - const octave_value& cx = do_cat_op (v1.x (), v2.x (), ra_idx); - if (!error_state) - { - octave_idx_type nd = v1.nderv (); - if (nd == v2.nderv ()) - { - Array idx = Array(2); - const dim_vector& dv1 = v1.dims (); - const dim_vector& dv2 = v2.dims (); - octave_idx_type c = 1; - octave_idx_type v = 0; - for (octave_idx_type k = 1; k < ra_idx.length (); k++) - { - v += ra_idx(k) * c; - c *= dv1(k); - } - idx(0) = ra_idx(0) * nd; - idx(1) = v; - return new octave_gradient (cx, do_cat_op ( - resh (v1.dx (), dim_vector (nd * dv1(0), dv1.numel () / dv1(0))), - resh (v2.dx (), dim_vector (nd * dv2(0), dv2.numel () / dv2(0))), idx). - reshape (dim_vector (nd, dv1.numel ()))); - } - else error (mismatching_ops); - } - return octave_value (); + CAST_BINOP_ARGS (const octave_gradient&, const octave_gradient&); + const octave_value& cx = do_cat_op (v1.x (), v2.x (), ra_idx); + if (! error_state) + { + octave_idx_type nd = v1.nderv (); + if (nd == v2.nderv ()) + { + Array idx (dim_vector (2, 1)); + const dim_vector& dv1 = v1.dims (); + const dim_vector& dv2 = v2.dims (); + octave_idx_type c = 1; + octave_idx_type v = 0; + for (octave_idx_type k = 1; k < ra_idx.length (); k++) + { + v += ra_idx(k) * c; + c *= dv1(k); + } + idx(0) = ra_idx(0) * nd; + idx(1) = v; + return new octave_gradient (cx, do_cat_op ( + resh (v1.dx (), dim_vector (nd * dv1(0), dv1.numel () / dv1(0))), + resh (v2.dx (), dim_vector (nd * dv2(0), dv2.numel () / dv2(0))), idx). + reshape (dim_vector (nd, dv1.numel ()))); + } + else + error (mismatching_ops); + } + return octave_value (); } void install_gradient_ops (void) diff -r bf7238a29d2f -r fda15ea44429 extra/ad/src/ov-grad.cc --- a/extra/ad/src/ov-grad.cc Sat Jan 04 02:27:11 2014 +0000 +++ b/extra/ad/src/ov-grad.cc Sat Jan 04 03:13:26 2014 +0000 @@ -45,14 +45,13 @@ static inline octave_value eye_mx (octave_idx_type n) { - if (octave_gradient::sparse_storage_mode ()) + if (octave_gradient::sparse_storage_mode ()) { - Array ix = Array (n); - for (octave_idx_type k = 0; k < n; k++) - ix(k) = k; - return SparseMatrix(Array (1, 1.0), ix, ix, n, n, false); + idx_vector ix (0, n-1); + return SparseMatrix (ColumnVector (1, 1.0), ix, ix, n, n, false); } - else return identity_matrix (n, n); + else + return identity_matrix (n, n); } /* constructor & member functions */