comparison liboctave/array/fNDArray.cc @ 32598:2f3b54f81947

avoid dim_vector copies in more places where possible (bug #64962) Where possible, use const reference to capture temporary dim_vector objects instead of making copies. Affected files: variable-editor-model.cc, besselj.cc, bitfcns.cc, cellfun.cc, data.cc, ellipj.cc, filter.cc, find.cc, gl-render.cc, graphics.cc, graphics.in.h, jsondecode.cc, jsonencode.cc, ls-mat5.cc, matrix_type.cc, mex.cc, oct-map.cc, pr-output.cc, sub2ind.cc, tril.cc, xpow.cc, ov-base-diag.cc, ov-base-int.cc, ov-base-mat.cc, ov-base-sparse.cc, ov-bool-mat.cc, ov-bool-sparse.cc, ov-cell.cc, ov-class.cc, ov-class.h, ov-classdef.cc, ov-cx-mat.cc, ov-cx-sparse.cc, ov-flt-cx-mat.cc, ov-flt-re-mat.cc, ov-intx.h, ov-java.cc, ov-perm.cc, ov-re-mat.cc, ov-re-sparse.cc, ov-str-mat.cc, ov-struct.cc, ovl.cc, op-int.h, op-str-str.cc, op-struct.cc, pt-eval.cc, pt-tm-const.cc, Array-base.cc, Array-util.cc, CNDArray.cc, CSparse.cc, Sparse.cc, dNDArray.cc, dSparse.cc, fCNDArray.cc, fNDArray.cc, bsxfun-defs.cc, lo-specfun.cc, mx-inlines.cc, oct-binmap.h.
author John W. Eaton <jwe@octave.org>
date Wed, 13 Dec 2023 15:48:06 -0500
parents 21f9b34eb893
children 4b601ca024d5
comparison
equal deleted inserted replaced
32597:2c3808f6155b 32598:2f3b54f81947
55 #if defined (HAVE_FFTW) 55 #if defined (HAVE_FFTW)
56 56
57 FloatComplexNDArray 57 FloatComplexNDArray
58 FloatNDArray::fourier (int dim) const 58 FloatNDArray::fourier (int dim) const
59 { 59 {
60 dim_vector dv = dims (); 60 const dim_vector& dv = dims ();
61 61
62 if (dim > dv.ndims () || dim < 0) 62 if (dim > dv.ndims () || dim < 0)
63 return FloatComplexNDArray (); 63 return FloatComplexNDArray ();
64 64
65 octave_idx_type stride = 1; 65 octave_idx_type stride = 1;
86 } 86 }
87 87
88 FloatComplexNDArray 88 FloatComplexNDArray
89 FloatNDArray::ifourier (int dim) const 89 FloatNDArray::ifourier (int dim) const
90 { 90 {
91 dim_vector dv = dims (); 91 const dim_vector& dv = dims ();
92 92
93 if (dim > dv.ndims () || dim < 0) 93 if (dim > dv.ndims () || dim < 0)
94 return FloatComplexNDArray (); 94 return FloatComplexNDArray ();
95 95
96 octave_idx_type stride = 1; 96 octave_idx_type stride = 1;
116 } 116 }
117 117
118 FloatComplexNDArray 118 FloatComplexNDArray
119 FloatNDArray::fourier2d () const 119 FloatNDArray::fourier2d () const
120 { 120 {
121 dim_vector dv = dims (); 121 const dim_vector& dv = dims ();
122 if (dv.ndims () < 2) 122 if (dv.ndims () < 2)
123 return FloatComplexNDArray (); 123 return FloatComplexNDArray ();
124 124
125 dim_vector dv2 (dv(0), dv(1)); 125 dim_vector dv2 (dv(0), dv(1));
126 const float *in = data (); 126 const float *in = data ();
136 } 136 }
137 137
138 FloatComplexNDArray 138 FloatComplexNDArray
139 FloatNDArray::ifourier2d () const 139 FloatNDArray::ifourier2d () const
140 { 140 {
141 dim_vector dv = dims (); 141 const dim_vector& dv = dims ();
142 if (dv.ndims () < 2) 142 if (dv.ndims () < 2)
143 return FloatComplexNDArray (); 143 return FloatComplexNDArray ();
144 144
145 dim_vector dv2 (dv(0), dv(1)); 145 dim_vector dv2 (dv(0), dv(1));
146 FloatComplexNDArray retval (*this); 146 FloatComplexNDArray retval (*this);
155 } 155 }
156 156
157 FloatComplexNDArray 157 FloatComplexNDArray
158 FloatNDArray::fourierNd () const 158 FloatNDArray::fourierNd () const
159 { 159 {
160 dim_vector dv = dims (); 160 const dim_vector& dv = dims ();
161 int rank = dv.ndims (); 161 int rank = dv.ndims ();
162 162
163 const float *in (data ()); 163 const float *in (data ());
164 FloatComplexNDArray retval (dv); 164 FloatComplexNDArray retval (dv);
165 FloatComplex *out (retval.fortran_vec ()); 165 FloatComplex *out (retval.fortran_vec ());
170 } 170 }
171 171
172 FloatComplexNDArray 172 FloatComplexNDArray
173 FloatNDArray::ifourierNd () const 173 FloatNDArray::ifourierNd () const
174 { 174 {
175 dim_vector dv = dims (); 175 const dim_vector& dv = dims ();
176 int rank = dv.ndims (); 176 int rank = dv.ndims ();
177 177
178 FloatComplexNDArray tmp (*this); 178 FloatComplexNDArray tmp (*this);
179 FloatComplex *in (tmp.fortran_vec ()); 179 FloatComplex *in (tmp.fortran_vec ());
180 FloatComplexNDArray retval (dv); 180 FloatComplexNDArray retval (dv);