Mercurial > octave
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); |