annotate liboctave/array/dNDArray.cc @ 23577:80c42f4cca13

maint: Deprecate is_empty and replace with isempty. * ov.h (is_empty): Use OCTAVE_DEPRECATED macro around function. * ov.h (isempty): New function. * Array.h (is_empty): Use OCTAVE_DEPRECATED macro around function. * Array.h (isempty): New function. * Range.h (is_empty): Use OCTAVE_DEPRECATED macro around function. * Range.h (isempty): New function. * Sparse.h (is_empty): Use OCTAVE_DEPRECATED macro around function. * Sparse.h (isempty): New function. * Backend.cc, BaseControl.cc, Canvas.cc, Figure.cc, gl-select.cc, __magick_read__.cc, __qp__.cc, cellfun.cc, daspk.cc, dasrt.cc, dassl.cc, data.cc, debug.cc, det.cc, eig.cc, error.cc, fft.cc, filter.cc, find.cc, ft-text-renderer.cc, gl-render.cc, gl2ps-print.cc, graphics.cc, graphics.in.h, hess.cc, inv.cc, lsode.cc, lu.cc, max.cc, mex.cc, mxarray.in.h, oct-handle.h, oct-lvalue.cc, oct-map.cc, oct-map.h, oct-stream.cc, pinv.cc, pr-output.cc, quadcc.cc, qz.cc, strfind.cc, strfns.cc, sylvester.cc, time.cc, toplev.cc, tril.cc, urlwrite.cc, utils.cc, utils.h, xnorm.cc, __delaunayn__.cc, __glpk__.cc, __init_fltk__.cc, __init_gnuplot__.cc, __ode15__.cc, __voronoi__.cc, chol.cc, convhulln.cc, ov-base-diag.cc, ov-base-mat.cc, ov-base-sparse.cc, ov-base.cc, ov-base.h, ov-bool-mat.cc, ov-bool-sparse.cc, ov-cell.cc, ov-class.cc, ov-classdef.cc, ov-cx-sparse.cc, ov-fcn-inline.cc, ov-flt-re-mat.cc, ov-intx.h, ov-java.cc, ov-perm.cc, ov-range.cc, ov-re-mat.cc, ov-re-sparse.cc, ov-str-mat.cc, ov-struct.cc, ov-usr-fcn.cc, ov.cc, ov.h, bp-table.cc, oct-parse.in.yy, pt-eval.cc, pt-tm-const.cc, pt-tm-const.h, Array.cc, Range.cc, Range.h, Sparse.cc, Sparse.h, chNDArray.cc, dNDArray.cc, fNDArray.cc, DASPK.cc, DASRT.cc, DASSL.cc, LSODE.cc, bsxfun-defs.cc, eigs-base.cc, oct-convn.cc, qr.cc: Replace instances of is_empty with isempty.
author Rik <rik@octave.org>
date Sun, 11 Jun 2017 22:14:09 -0700
parents 7049da1648c0
children 336f89b6208b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4511
24af46b4ce84 [project @ 2003-09-12 16:46:04 by jwe]
jwe
parents:
diff changeset
1 /*
24af46b4ce84 [project @ 2003-09-12 16:46:04 by jwe]
jwe
parents:
diff changeset
2
23219
3ac9f9ecfae5 maint: Update copyright dates.
John W. Eaton <jwe@octave.org>
parents: 23083
diff changeset
3 Copyright (C) 1996-2017 John W. Eaton
9601
a9b37bae1802 add a couple of missing copyright statements
Jaroslav Hajek <highegg@gmail.com>
parents: 9578
diff changeset
4 Copyright (C) 2009 VZLU Prague, a.s.
4511
24af46b4ce84 [project @ 2003-09-12 16:46:04 by jwe]
jwe
parents:
diff changeset
5
24af46b4ce84 [project @ 2003-09-12 16:46:04 by jwe]
jwe
parents:
diff changeset
6 This file is part of Octave.
24af46b4ce84 [project @ 2003-09-12 16:46:04 by jwe]
jwe
parents:
diff changeset
7
24af46b4ce84 [project @ 2003-09-12 16:46:04 by jwe]
jwe
parents:
diff changeset
8 Octave is free software; you can redistribute it and/or modify it
22755
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22402
diff changeset
9 under the terms of the GNU General Public License as published by
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22402
diff changeset
10 the Free Software Foundation; either version 3 of the License, or
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22402
diff changeset
11 (at your option) any later version.
4511
24af46b4ce84 [project @ 2003-09-12 16:46:04 by jwe]
jwe
parents:
diff changeset
12
22755
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22402
diff changeset
13 Octave is distributed in the hope that it will be useful, but
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22402
diff changeset
14 WITHOUT ANY WARRANTY; without even the implied warranty of
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22402
diff changeset
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22402
diff changeset
16 GNU General Public License for more details.
4511
24af46b4ce84 [project @ 2003-09-12 16:46:04 by jwe]
jwe
parents:
diff changeset
17
24af46b4ce84 [project @ 2003-09-12 16:46:04 by jwe]
jwe
parents:
diff changeset
18 You should have received a copy of the GNU General Public License
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6989
diff changeset
19 along with Octave; see the file COPYING. If not, see
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6989
diff changeset
20 <http://www.gnu.org/licenses/>.
4511
24af46b4ce84 [project @ 2003-09-12 16:46:04 by jwe]
jwe
parents:
diff changeset
21
24af46b4ce84 [project @ 2003-09-12 16:46:04 by jwe]
jwe
parents:
diff changeset
22 */
24af46b4ce84 [project @ 2003-09-12 16:46:04 by jwe]
jwe
parents:
diff changeset
23
21724
aba2e6293dd8 use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents: 21660
diff changeset
24 #if defined (HAVE_CONFIG_H)
21301
40de9f8f23a6 Use '#include "config.h"' rather than <config.h>.
Rik <rik@octave.org>
parents: 21202
diff changeset
25 # include "config.h"
4511
24af46b4ce84 [project @ 2003-09-12 16:46:04 by jwe]
jwe
parents:
diff changeset
26 #endif
24af46b4ce84 [project @ 2003-09-12 16:46:04 by jwe]
jwe
parents:
diff changeset
27
23443
3f1bf237908b maint: Eliminate <cfloat.h> header from liboctave files.
Rik <rik@octave.org>
parents: 23220
diff changeset
28 #include <iostream>
3f1bf237908b maint: Eliminate <cfloat.h> header from liboctave files.
Rik <rik@octave.org>
parents: 23220
diff changeset
29 #include <limits>
4634
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
30
4588
19bfd295f400 [project @ 2003-11-10 17:18:48 by jwe]
jwe
parents: 4584
diff changeset
31 #include "Array-util.h"
4513
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4511
diff changeset
32 #include "dNDArray.h"
9523
0ce82753dd72 more configure changes for libraries
John W. Eaton <jwe@octave.org>
parents: 9513
diff changeset
33 #include "f77-fcn.h"
7503
8c32f95c2639 convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
34 #include "functor.h"
4513
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4511
diff changeset
35 #include "lo-error.h"
4511
24af46b4ce84 [project @ 2003-09-12 16:46:04 by jwe]
jwe
parents:
diff changeset
36 #include "lo-ieee.h"
4634
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
37 #include "lo-mappers.h"
9523
0ce82753dd72 more configure changes for libraries
John W. Eaton <jwe@octave.org>
parents: 9513
diff changeset
38 #include "mx-base.h"
8774
b756ce0002db split implementation and interface in mx-op-defs and MArray-defs
Jaroslav Hajek <highegg@gmail.com>
parents: 8751
diff changeset
39 #include "mx-op-defs.h"
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
40 #include "oct-fftw.h"
9523
0ce82753dd72 more configure changes for libraries
John W. Eaton <jwe@octave.org>
parents: 9513
diff changeset
41 #include "oct-locbuf.h"
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
42
9743
26abff55f6fe optimize bsxfun for common built-in operations
Jaroslav Hajek <highegg@gmail.com>
parents: 9732
diff changeset
43 #include "bsxfun-defs.cc"
26abff55f6fe optimize bsxfun for common built-in operations
Jaroslav Hajek <highegg@gmail.com>
parents: 9732
diff changeset
44
7919
9d080df0c843 new NDArray constructor for ArrayN<octave_idx_type>
David Bateman <dbateman@free.fr>
parents: 7789
diff changeset
45 NDArray::NDArray (const Array<octave_idx_type>& a, bool zero_based,
10314
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
46 bool negative_to_nan)
7919
9d080df0c843 new NDArray constructor for ArrayN<octave_idx_type>
David Bateman <dbateman@free.fr>
parents: 7789
diff changeset
47 {
9d080df0c843 new NDArray constructor for ArrayN<octave_idx_type>
David Bateman <dbateman@free.fr>
parents: 7789
diff changeset
48 const octave_idx_type *pa = a.fortran_vec ();
9d080df0c843 new NDArray constructor for ArrayN<octave_idx_type>
David Bateman <dbateman@free.fr>
parents: 7789
diff changeset
49 resize (a.dims ());
9d080df0c843 new NDArray constructor for ArrayN<octave_idx_type>
David Bateman <dbateman@free.fr>
parents: 7789
diff changeset
50 double *ptmp = fortran_vec ();
9d080df0c843 new NDArray constructor for ArrayN<octave_idx_type>
David Bateman <dbateman@free.fr>
parents: 7789
diff changeset
51 if (negative_to_nan)
9d080df0c843 new NDArray constructor for ArrayN<octave_idx_type>
David Bateman <dbateman@free.fr>
parents: 7789
diff changeset
52 {
9d080df0c843 new NDArray constructor for ArrayN<octave_idx_type>
David Bateman <dbateman@free.fr>
parents: 7789
diff changeset
53 double nan_val = lo_ieee_nan_value ();
9d080df0c843 new NDArray constructor for ArrayN<octave_idx_type>
David Bateman <dbateman@free.fr>
parents: 7789
diff changeset
54
9d080df0c843 new NDArray constructor for ArrayN<octave_idx_type>
David Bateman <dbateman@free.fr>
parents: 7789
diff changeset
55 if (zero_based)
10314
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
56 for (octave_idx_type i = 0; i < a.numel (); i++)
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
57 {
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
58 double val = static_cast<double>
17769
49a5a4be04a1 maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents: 17744
diff changeset
59 (pa[i] + static_cast<octave_idx_type> (1));
10314
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
60 if (val <= 0)
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
61 ptmp[i] = nan_val;
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
62 else
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
63 ptmp[i] = val;
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
64 }
7919
9d080df0c843 new NDArray constructor for ArrayN<octave_idx_type>
David Bateman <dbateman@free.fr>
parents: 7789
diff changeset
65 else
10314
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
66 for (octave_idx_type i = 0; i < a.numel (); i++)
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
67 {
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
68 double val = static_cast<double> (pa[i]);
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
69 if (val <= 0)
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
70 ptmp[i] = nan_val;
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
71 else
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
72 ptmp[i] = val;
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
73 }
7919
9d080df0c843 new NDArray constructor for ArrayN<octave_idx_type>
David Bateman <dbateman@free.fr>
parents: 7789
diff changeset
74 }
9d080df0c843 new NDArray constructor for ArrayN<octave_idx_type>
David Bateman <dbateman@free.fr>
parents: 7789
diff changeset
75 else
9d080df0c843 new NDArray constructor for ArrayN<octave_idx_type>
David Bateman <dbateman@free.fr>
parents: 7789
diff changeset
76 {
9d080df0c843 new NDArray constructor for ArrayN<octave_idx_type>
David Bateman <dbateman@free.fr>
parents: 7789
diff changeset
77 if (zero_based)
10314
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
78 for (octave_idx_type i = 0; i < a.numel (); i++)
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
79 ptmp[i] = static_cast<double>
17769
49a5a4be04a1 maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents: 17744
diff changeset
80 (pa[i] + static_cast<octave_idx_type> (1));
7919
9d080df0c843 new NDArray constructor for ArrayN<octave_idx_type>
David Bateman <dbateman@free.fr>
parents: 7789
diff changeset
81 else
10314
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
82 for (octave_idx_type i = 0; i < a.numel (); i++)
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
83 ptmp[i] = static_cast<double> (pa[i]);
7919
9d080df0c843 new NDArray constructor for ArrayN<octave_idx_type>
David Bateman <dbateman@free.fr>
parents: 7789
diff changeset
84 }
9d080df0c843 new NDArray constructor for ArrayN<octave_idx_type>
David Bateman <dbateman@free.fr>
parents: 7789
diff changeset
85 }
9d080df0c843 new NDArray constructor for ArrayN<octave_idx_type>
David Bateman <dbateman@free.fr>
parents: 7789
diff changeset
86
8956
d91fa4b20bbb ensure nonnegative char -> real conversion
Jaroslav Hajek <highegg@gmail.com>
parents: 8920
diff changeset
87 NDArray::NDArray (const charNDArray& a)
10350
12884915a8e4 merge MArray classes & improve Array interface
Jaroslav Hajek <highegg@gmail.com>
parents: 10329
diff changeset
88 : MArray<double> (a.dims ())
8956
d91fa4b20bbb ensure nonnegative char -> real conversion
Jaroslav Hajek <highegg@gmail.com>
parents: 8920
diff changeset
89 {
d91fa4b20bbb ensure nonnegative char -> real conversion
Jaroslav Hajek <highegg@gmail.com>
parents: 8920
diff changeset
90 octave_idx_type n = a.numel ();
d91fa4b20bbb ensure nonnegative char -> real conversion
Jaroslav Hajek <highegg@gmail.com>
parents: 8920
diff changeset
91 for (octave_idx_type i = 0; i < n; i++)
d91fa4b20bbb ensure nonnegative char -> real conversion
Jaroslav Hajek <highegg@gmail.com>
parents: 8920
diff changeset
92 xelem (i) = static_cast<unsigned char> (a(i));
d91fa4b20bbb ensure nonnegative char -> real conversion
Jaroslav Hajek <highegg@gmail.com>
parents: 8920
diff changeset
93 }
d91fa4b20bbb ensure nonnegative char -> real conversion
Jaroslav Hajek <highegg@gmail.com>
parents: 8920
diff changeset
94
9523
0ce82753dd72 more configure changes for libraries
John W. Eaton <jwe@octave.org>
parents: 9513
diff changeset
95 #if defined (HAVE_FFTW)
7941
f8cab9eeb128 Fix NDArray compilation/export
John W. Eaton <jwe@octave.org>
parents: 7922
diff changeset
96
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
97 ComplexNDArray
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
98 NDArray::fourier (int dim) const
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
99 {
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
100 dim_vector dv = dims ();
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
101
21660
53728df3e4c9 maint: for clarity, call ndims() rather than length() on dimension vectors.
Rik <rik@octave.org>
parents: 21562
diff changeset
102 if (dim > dv.ndims () || dim < 0)
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
103 return ComplexNDArray ();
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
104
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
105 octave_idx_type stride = 1;
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
106 octave_idx_type n = dv(dim);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
107
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
108 for (int i = 0; i < dim; i++)
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
109 stride *= dv(i);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
110
20218
b2100e1659ac maint: Use cuddled parentheses when indexing dimension_vectors.
Rik <rik@octave.org>
parents: 19697
diff changeset
111 octave_idx_type howmany = numel () / dv(dim);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
112 howmany = (stride == 1 ? howmany : (howmany > stride ? stride : howmany));
20218
b2100e1659ac maint: Use cuddled parentheses when indexing dimension_vectors.
Rik <rik@octave.org>
parents: 19697
diff changeset
113 octave_idx_type nloop = (stride == 1 ? 1 : numel () / dv(dim) / stride);
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
114 octave_idx_type dist = (stride == 1 ? n : 1);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
115
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
116 const double *in (fortran_vec ());
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
117 ComplexNDArray retval (dv);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
118 Complex *out (retval.fortran_vec ());
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
119
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
120 // Need to be careful here about the distance between fft's
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
121 for (octave_idx_type k = 0; k < nloop; k++)
23058
5839d16828cb move fftw classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
122 octave::fftw::fft (in + k * stride * n, out + k * stride * n,
5839d16828cb move fftw classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
123 n, howmany, stride, dist);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
124
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
125 return retval;
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
126 }
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
127
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
128 ComplexNDArray
4816
4908c82cd1a1 [project @ 2004-03-04 18:13:46 by jwe]
jwe
parents: 4806
diff changeset
129 NDArray::ifourier (int dim) const
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
130 {
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
131 dim_vector dv = dims ();
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
132
21660
53728df3e4c9 maint: for clarity, call ndims() rather than length() on dimension vectors.
Rik <rik@octave.org>
parents: 21562
diff changeset
133 if (dim > dv.ndims () || dim < 0)
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
134 return ComplexNDArray ();
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
135
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
136 octave_idx_type stride = 1;
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
137 octave_idx_type n = dv(dim);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
138
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
139 for (int i = 0; i < dim; i++)
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
140 stride *= dv(i);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
141
20218
b2100e1659ac maint: Use cuddled parentheses when indexing dimension_vectors.
Rik <rik@octave.org>
parents: 19697
diff changeset
142 octave_idx_type howmany = numel () / dv(dim);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
143 howmany = (stride == 1 ? howmany : (howmany > stride ? stride : howmany));
20218
b2100e1659ac maint: Use cuddled parentheses when indexing dimension_vectors.
Rik <rik@octave.org>
parents: 19697
diff changeset
144 octave_idx_type nloop = (stride == 1 ? 1 : numel () / dv(dim) / stride);
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
145 octave_idx_type dist = (stride == 1 ? n : 1);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
146
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
147 ComplexNDArray retval (*this);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
148 Complex *out (retval.fortran_vec ());
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
149
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
150 // Need to be careful here about the distance between fft's
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
151 for (octave_idx_type k = 0; k < nloop; k++)
23058
5839d16828cb move fftw classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
152 octave::fftw::ifft (out + k * stride * n, out + k * stride * n,
5839d16828cb move fftw classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
153 n, howmany, stride, dist);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
154
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
155 return retval;
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
156 }
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
157
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
158 ComplexNDArray
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
159 NDArray::fourier2d (void) const
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
160 {
14846
460a3c6d8bf1 maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents: 14844
diff changeset
161 dim_vector dv = dims ();
21660
53728df3e4c9 maint: for clarity, call ndims() rather than length() on dimension vectors.
Rik <rik@octave.org>
parents: 21562
diff changeset
162 if (dv.ndims () < 2)
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
163 return ComplexNDArray ();
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
164
20218
b2100e1659ac maint: Use cuddled parentheses when indexing dimension_vectors.
Rik <rik@octave.org>
parents: 19697
diff changeset
165 dim_vector dv2 (dv(0), dv(1));
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
166 const double *in = fortran_vec ();
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
167 ComplexNDArray retval (dv);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
168 Complex *out = retval.fortran_vec ();
14846
460a3c6d8bf1 maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents: 14844
diff changeset
169 octave_idx_type howmany = numel () / dv(0) / dv(1);
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
170 octave_idx_type dist = dv(0) * dv(1);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
171
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
172 for (octave_idx_type i=0; i < howmany; i++)
23058
5839d16828cb move fftw classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
173 octave::fftw::fftNd (in + i*dist, out + i*dist, 2, dv2);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
174
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
175 return retval;
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
176 }
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
177
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
178 ComplexNDArray
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
179 NDArray::ifourier2d (void) const
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
180 {
14846
460a3c6d8bf1 maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents: 14844
diff changeset
181 dim_vector dv = dims ();
21660
53728df3e4c9 maint: for clarity, call ndims() rather than length() on dimension vectors.
Rik <rik@octave.org>
parents: 21562
diff changeset
182 if (dv.ndims () < 2)
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
183 return ComplexNDArray ();
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
184
20218
b2100e1659ac maint: Use cuddled parentheses when indexing dimension_vectors.
Rik <rik@octave.org>
parents: 19697
diff changeset
185 dim_vector dv2 (dv(0), dv(1));
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
186 ComplexNDArray retval (*this);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
187 Complex *out = retval.fortran_vec ();
14846
460a3c6d8bf1 maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents: 14844
diff changeset
188 octave_idx_type howmany = numel () / dv(0) / dv(1);
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
189 octave_idx_type dist = dv(0) * dv(1);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
190
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
191 for (octave_idx_type i=0; i < howmany; i++)
23058
5839d16828cb move fftw classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
192 octave::fftw::ifftNd (out + i*dist, out + i*dist, 2, dv2);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
193
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
194 return retval;
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
195 }
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
196
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
197 ComplexNDArray
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
198 NDArray::fourierNd (void) const
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
199 {
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
200 dim_vector dv = dims ();
21660
53728df3e4c9 maint: for clarity, call ndims() rather than length() on dimension vectors.
Rik <rik@octave.org>
parents: 21562
diff changeset
201 int rank = dv.ndims ();
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
202
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
203 const double *in (fortran_vec ());
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
204 ComplexNDArray retval (dv);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
205 Complex *out (retval.fortran_vec ());
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
206
23058
5839d16828cb move fftw classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
207 octave::fftw::fftNd (in, out, rank, dv);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
208
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
209 return retval;
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
210 }
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
211
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
212 ComplexNDArray
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
213 NDArray::ifourierNd (void) const
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
214 {
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
215 dim_vector dv = dims ();
21660
53728df3e4c9 maint: for clarity, call ndims() rather than length() on dimension vectors.
Rik <rik@octave.org>
parents: 21562
diff changeset
216 int rank = dv.ndims ();
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
217
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
218 ComplexNDArray tmp (*this);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
219 Complex *in (tmp.fortran_vec ());
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
220 ComplexNDArray retval (dv);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
221 Complex *out (retval.fortran_vec ());
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
222
23058
5839d16828cb move fftw classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
223 octave::fftw::ifftNd (in, out, rank, dv);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
224
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
225 return retval;
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
226 }
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
227
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
228 #else
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
229
22322
93b3cdd36854 move most f77 function decls to separate header files
John W. Eaton <jwe@octave.org>
parents: 22261
diff changeset
230 #include "lo-fftpack-proto.h"
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
231
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
232 ComplexNDArray
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
233 NDArray::fourier (int dim) const
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
234 {
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
235 dim_vector dv = dims ();
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
236
21660
53728df3e4c9 maint: for clarity, call ndims() rather than length() on dimension vectors.
Rik <rik@octave.org>
parents: 21562
diff changeset
237 if (dim > dv.ndims () || dim < 0)
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
238 return ComplexNDArray ();
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
239
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
240 ComplexNDArray retval (dv);
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
241 octave_idx_type npts = dv(dim);
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
242 octave_idx_type nn = 4*npts+15;
19342
8f6a8422435d Replace instances of deprecated Array constructor in FFTPACK-related code.
Rik <rik@octave.org>
parents: 19320
diff changeset
243 Array<Complex> wsave (dim_vector (nn, 1));
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
244 Complex *pwsave = wsave.fortran_vec ();
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
245
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
246 OCTAVE_LOCAL_BUFFER (Complex, tmp, npts);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
247
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
248 octave_idx_type stride = 1;
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
249
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
250 for (int i = 0; i < dim; i++)
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
251 stride *= dv(i);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
252
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
253 octave_idx_type howmany = numel () / npts;
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
254 howmany = (stride == 1 ? howmany : (howmany > stride ? stride : howmany));
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
255 octave_idx_type nloop = (stride == 1 ? 1 : numel () / npts / stride);
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
256 octave_idx_type dist = (stride == 1 ? npts : 1);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
257
22261
77c4d43e06d1 Use new macros for passing complex arguments to Fortran FFTPACK subroutines
Mike Miller <mtmiller@octave.org>
parents: 22133
diff changeset
258 F77_FUNC (zffti, ZFFTI) (npts, F77_DBLE_CMPLX_ARG (pwsave));
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
259
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
260 for (octave_idx_type k = 0; k < nloop; k++)
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
261 {
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
262 for (octave_idx_type j = 0; j < howmany; j++)
10314
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
263 {
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
264 octave_quit ();
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
265
10314
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
266 for (octave_idx_type i = 0; i < npts; i++)
15018
3d8ace26c5b4 maint: Use Octave coding conventions for cuddled parentheses in liboctave/.
Rik <rik@octave.org>
parents: 14846
diff changeset
267 tmp[i] = elem ((i + k*npts)*stride + j*dist);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
268
22402
4caa7b28d183 maint: Style check C++ code in liboctave/
Rik <rik@octave.org>
parents: 22327
diff changeset
269 F77_FUNC (zfftf, ZFFTF) (npts, F77_DBLE_CMPLX_ARG (tmp),
4caa7b28d183 maint: Style check C++ code in liboctave/
Rik <rik@octave.org>
parents: 22327
diff changeset
270 F77_DBLE_CMPLX_ARG (pwsave));
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
271
10314
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
272 for (octave_idx_type i = 0; i < npts; i++)
14844
5bc9b9cb4362 maint: Use Octave coding conventions for cuddled parenthesis in retval assignments.
Rik <octave@nomad.inbox5.com>
parents: 14557
diff changeset
273 retval((i + k*npts)*stride + j*dist) = tmp[i];
10314
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
274 }
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
275 }
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
276
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
277 return retval;
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
278 }
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
279
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
280 ComplexNDArray
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
281 NDArray::ifourier (int dim) const
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
282 {
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
283 dim_vector dv = dims ();
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
284
21660
53728df3e4c9 maint: for clarity, call ndims() rather than length() on dimension vectors.
Rik <rik@octave.org>
parents: 21562
diff changeset
285 if (dim > dv.ndims () || dim < 0)
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
286 return ComplexNDArray ();
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
287
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
288 ComplexNDArray retval (dv);
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
289 octave_idx_type npts = dv(dim);
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
290 octave_idx_type nn = 4*npts+15;
19342
8f6a8422435d Replace instances of deprecated Array constructor in FFTPACK-related code.
Rik <rik@octave.org>
parents: 19320
diff changeset
291 Array<Complex> wsave (dim_vector (nn, 1));
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
292 Complex *pwsave = wsave.fortran_vec ();
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
293
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
294 OCTAVE_LOCAL_BUFFER (Complex, tmp, npts);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
295
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
296 octave_idx_type stride = 1;
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
297
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
298 for (int i = 0; i < dim; i++)
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
299 stride *= dv(i);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
300
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
301 octave_idx_type howmany = numel () / npts;
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
302 howmany = (stride == 1 ? howmany : (howmany > stride ? stride : howmany));
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
303 octave_idx_type nloop = (stride == 1 ? 1 : numel () / npts / stride);
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
304 octave_idx_type dist = (stride == 1 ? npts : 1);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
305
22261
77c4d43e06d1 Use new macros for passing complex arguments to Fortran FFTPACK subroutines
Mike Miller <mtmiller@octave.org>
parents: 22133
diff changeset
306 F77_FUNC (zffti, ZFFTI) (npts, F77_DBLE_CMPLX_ARG (pwsave));
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
307
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
308 for (octave_idx_type k = 0; k < nloop; k++)
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
309 {
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
310 for (octave_idx_type j = 0; j < howmany; j++)
10314
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
311 {
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
312 octave_quit ();
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
313
10314
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
314 for (octave_idx_type i = 0; i < npts; i++)
15018
3d8ace26c5b4 maint: Use Octave coding conventions for cuddled parentheses in liboctave/.
Rik <rik@octave.org>
parents: 14846
diff changeset
315 tmp[i] = elem ((i + k*npts)*stride + j*dist);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
316
22402
4caa7b28d183 maint: Style check C++ code in liboctave/
Rik <rik@octave.org>
parents: 22327
diff changeset
317 F77_FUNC (zfftb, ZFFTB) (npts, F77_DBLE_CMPLX_ARG (tmp),
4caa7b28d183 maint: Style check C++ code in liboctave/
Rik <rik@octave.org>
parents: 22327
diff changeset
318 F77_DBLE_CMPLX_ARG (pwsave));
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
319
10314
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
320 for (octave_idx_type i = 0; i < npts; i++)
14844
5bc9b9cb4362 maint: Use Octave coding conventions for cuddled parenthesis in retval assignments.
Rik <octave@nomad.inbox5.com>
parents: 14557
diff changeset
321 retval((i + k*npts)*stride + j*dist) = tmp[i] /
17769
49a5a4be04a1 maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents: 17744
diff changeset
322 static_cast<double> (npts);
10314
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
323 }
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
324 }
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
325
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
326 return retval;
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
327 }
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
328
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
329 ComplexNDArray
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
330 NDArray::fourier2d (void) const
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
331 {
14846
460a3c6d8bf1 maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents: 14844
diff changeset
332 dim_vector dv = dims ();
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
333 dim_vector dv2 (dv(0), dv(1));
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
334 int rank = 2;
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
335 ComplexNDArray retval (*this);
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
336 octave_idx_type stride = 1;
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
337
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
338 for (int i = 0; i < rank; i++)
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
339 {
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
340 octave_idx_type npts = dv2(i);
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
341 octave_idx_type nn = 4*npts+15;
19342
8f6a8422435d Replace instances of deprecated Array constructor in FFTPACK-related code.
Rik <rik@octave.org>
parents: 19320
diff changeset
342 Array<Complex> wsave (dim_vector (nn, 1));
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
343 Complex *pwsave = wsave.fortran_vec ();
19342
8f6a8422435d Replace instances of deprecated Array constructor in FFTPACK-related code.
Rik <rik@octave.org>
parents: 19320
diff changeset
344 Array<Complex> row (dim_vector (npts, 1));
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
345 Complex *prow = row.fortran_vec ();
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
346
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
347 octave_idx_type howmany = numel () / npts;
23450
855122b993da maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents: 23443
diff changeset
348 howmany = (stride == 1 ? howmany
855122b993da maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents: 23443
diff changeset
349 : (howmany > stride ? stride : howmany));
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
350 octave_idx_type nloop = (stride == 1 ? 1 : numel () / npts / stride);
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
351 octave_idx_type dist = (stride == 1 ? npts : 1);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
352
22261
77c4d43e06d1 Use new macros for passing complex arguments to Fortran FFTPACK subroutines
Mike Miller <mtmiller@octave.org>
parents: 22133
diff changeset
353 F77_FUNC (zffti, ZFFTI) (npts, F77_DBLE_CMPLX_ARG (pwsave));
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
354
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
355 for (octave_idx_type k = 0; k < nloop; k++)
10314
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
356 {
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
357 for (octave_idx_type j = 0; j < howmany; j++)
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
358 {
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
359 octave_quit ();
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
360
10314
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
361 for (octave_idx_type l = 0; l < npts; l++)
14844
5bc9b9cb4362 maint: Use Octave coding conventions for cuddled parenthesis in retval assignments.
Rik <octave@nomad.inbox5.com>
parents: 14557
diff changeset
362 prow[l] = retval((l + k*npts)*stride + j*dist);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
363
22402
4caa7b28d183 maint: Style check C++ code in liboctave/
Rik <rik@octave.org>
parents: 22327
diff changeset
364 F77_FUNC (zfftf, ZFFTF) (npts, F77_DBLE_CMPLX_ARG (prow),
4caa7b28d183 maint: Style check C++ code in liboctave/
Rik <rik@octave.org>
parents: 22327
diff changeset
365 F77_DBLE_CMPLX_ARG (pwsave));
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
366
10314
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
367 for (octave_idx_type l = 0; l < npts; l++)
14844
5bc9b9cb4362 maint: Use Octave coding conventions for cuddled parenthesis in retval assignments.
Rik <octave@nomad.inbox5.com>
parents: 14557
diff changeset
368 retval((l + k*npts)*stride + j*dist) = prow[l];
10314
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
369 }
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
370 }
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
371
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
372 stride *= dv2(i);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
373 }
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
374
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
375 return retval;
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
376 }
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
377
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
378 ComplexNDArray
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
379 NDArray::ifourier2d (void) const
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
380 {
14846
460a3c6d8bf1 maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents: 14844
diff changeset
381 dim_vector dv = dims ();
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
382 dim_vector dv2 (dv(0), dv(1));
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
383 int rank = 2;
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
384 ComplexNDArray retval (*this);
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
385 octave_idx_type stride = 1;
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
386
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
387 for (int i = 0; i < rank; i++)
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
388 {
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
389 octave_idx_type npts = dv2(i);
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
390 octave_idx_type nn = 4*npts+15;
19342
8f6a8422435d Replace instances of deprecated Array constructor in FFTPACK-related code.
Rik <rik@octave.org>
parents: 19320
diff changeset
391 Array<Complex> wsave (dim_vector (nn, 1));
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
392 Complex *pwsave = wsave.fortran_vec ();
19342
8f6a8422435d Replace instances of deprecated Array constructor in FFTPACK-related code.
Rik <rik@octave.org>
parents: 19320
diff changeset
393 Array<Complex> row (dim_vector (npts, 1));
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
394 Complex *prow = row.fortran_vec ();
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
395
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
396 octave_idx_type howmany = numel () / npts;
23450
855122b993da maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents: 23443
diff changeset
397 howmany = (stride == 1 ? howmany
855122b993da maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents: 23443
diff changeset
398 : (howmany > stride ? stride : howmany));
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
399 octave_idx_type nloop = (stride == 1 ? 1 : numel () / npts / stride);
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
400 octave_idx_type dist = (stride == 1 ? npts : 1);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
401
22261
77c4d43e06d1 Use new macros for passing complex arguments to Fortran FFTPACK subroutines
Mike Miller <mtmiller@octave.org>
parents: 22133
diff changeset
402 F77_FUNC (zffti, ZFFTI) (npts, F77_DBLE_CMPLX_ARG (pwsave));
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
403
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
404 for (octave_idx_type k = 0; k < nloop; k++)
10314
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
405 {
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
406 for (octave_idx_type j = 0; j < howmany; j++)
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
407 {
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
408 octave_quit ();
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
409
10314
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
410 for (octave_idx_type l = 0; l < npts; l++)
14844
5bc9b9cb4362 maint: Use Octave coding conventions for cuddled parenthesis in retval assignments.
Rik <octave@nomad.inbox5.com>
parents: 14557
diff changeset
411 prow[l] = retval((l + k*npts)*stride + j*dist);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
412
22402
4caa7b28d183 maint: Style check C++ code in liboctave/
Rik <rik@octave.org>
parents: 22327
diff changeset
413 F77_FUNC (zfftb, ZFFTB) (npts, F77_DBLE_CMPLX_ARG (prow),
4caa7b28d183 maint: Style check C++ code in liboctave/
Rik <rik@octave.org>
parents: 22327
diff changeset
414 F77_DBLE_CMPLX_ARG (pwsave));
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
415
10314
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
416 for (octave_idx_type l = 0; l < npts; l++)
17769
49a5a4be04a1 maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents: 17744
diff changeset
417 retval((l + k*npts)*stride + j*dist) =
49a5a4be04a1 maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents: 17744
diff changeset
418 prow[l] / static_cast<double> (npts);
10314
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
419 }
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
420 }
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
421
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
422 stride *= dv2(i);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
423 }
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
424
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
425 return retval;
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
426 }
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
427
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
428 ComplexNDArray
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
429 NDArray::fourierNd (void) const
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
430 {
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
431 dim_vector dv = dims ();
21660
53728df3e4c9 maint: for clarity, call ndims() rather than length() on dimension vectors.
Rik <rik@octave.org>
parents: 21562
diff changeset
432 int rank = dv.ndims ();
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
433 ComplexNDArray retval (*this);
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
434 octave_idx_type stride = 1;
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
435
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
436 for (int i = 0; i < rank; i++)
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
437 {
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
438 octave_idx_type npts = dv(i);
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
439 octave_idx_type nn = 4*npts+15;
19342
8f6a8422435d Replace instances of deprecated Array constructor in FFTPACK-related code.
Rik <rik@octave.org>
parents: 19320
diff changeset
440 Array<Complex> wsave (dim_vector (nn, 1));
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
441 Complex *pwsave = wsave.fortran_vec ();
19342
8f6a8422435d Replace instances of deprecated Array constructor in FFTPACK-related code.
Rik <rik@octave.org>
parents: 19320
diff changeset
442 Array<Complex> row (dim_vector (npts, 1));
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
443 Complex *prow = row.fortran_vec ();
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
444
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
445 octave_idx_type howmany = numel () / npts;
23450
855122b993da maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents: 23443
diff changeset
446 howmany = (stride == 1 ? howmany
855122b993da maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents: 23443
diff changeset
447 : (howmany > stride ? stride : howmany));
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
448 octave_idx_type nloop = (stride == 1 ? 1 : numel () / npts / stride);
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
449 octave_idx_type dist = (stride == 1 ? npts : 1);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
450
22261
77c4d43e06d1 Use new macros for passing complex arguments to Fortran FFTPACK subroutines
Mike Miller <mtmiller@octave.org>
parents: 22133
diff changeset
451 F77_FUNC (zffti, ZFFTI) (npts, F77_DBLE_CMPLX_ARG (pwsave));
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
452
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
453 for (octave_idx_type k = 0; k < nloop; k++)
10314
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
454 {
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
455 for (octave_idx_type j = 0; j < howmany; j++)
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
456 {
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
457 octave_quit ();
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
458
10314
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
459 for (octave_idx_type l = 0; l < npts; l++)
14844
5bc9b9cb4362 maint: Use Octave coding conventions for cuddled parenthesis in retval assignments.
Rik <octave@nomad.inbox5.com>
parents: 14557
diff changeset
460 prow[l] = retval((l + k*npts)*stride + j*dist);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
461
22402
4caa7b28d183 maint: Style check C++ code in liboctave/
Rik <rik@octave.org>
parents: 22327
diff changeset
462 F77_FUNC (zfftf, ZFFTF) (npts, F77_DBLE_CMPLX_ARG (prow),
4caa7b28d183 maint: Style check C++ code in liboctave/
Rik <rik@octave.org>
parents: 22327
diff changeset
463 F77_DBLE_CMPLX_ARG (pwsave));
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
464
10314
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
465 for (octave_idx_type l = 0; l < npts; l++)
14844
5bc9b9cb4362 maint: Use Octave coding conventions for cuddled parenthesis in retval assignments.
Rik <octave@nomad.inbox5.com>
parents: 14557
diff changeset
466 retval((l + k*npts)*stride + j*dist) = prow[l];
10314
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
467 }
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
468 }
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
469
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
470 stride *= dv(i);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
471 }
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
472
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
473 return retval;
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
474 }
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
475
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
476 ComplexNDArray
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
477 NDArray::ifourierNd (void) const
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
478 {
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
479 dim_vector dv = dims ();
21660
53728df3e4c9 maint: for clarity, call ndims() rather than length() on dimension vectors.
Rik <rik@octave.org>
parents: 21562
diff changeset
480 int rank = dv.ndims ();
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
481 ComplexNDArray retval (*this);
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
482 octave_idx_type stride = 1;
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
483
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
484 for (int i = 0; i < rank; i++)
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
485 {
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
486 octave_idx_type npts = dv(i);
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
487 octave_idx_type nn = 4*npts+15;
19342
8f6a8422435d Replace instances of deprecated Array constructor in FFTPACK-related code.
Rik <rik@octave.org>
parents: 19320
diff changeset
488 Array<Complex> wsave (dim_vector (nn, 1));
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
489 Complex *pwsave = wsave.fortran_vec ();
19342
8f6a8422435d Replace instances of deprecated Array constructor in FFTPACK-related code.
Rik <rik@octave.org>
parents: 19320
diff changeset
490 Array<Complex> row (dim_vector (npts, 1));
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
491 Complex *prow = row.fortran_vec ();
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
492
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
493 octave_idx_type howmany = numel () / npts;
23450
855122b993da maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents: 23443
diff changeset
494 howmany = (stride == 1 ? howmany
855122b993da maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents: 23443
diff changeset
495 : (howmany > stride ? stride : howmany));
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
496 octave_idx_type nloop = (stride == 1 ? 1 : numel () / npts / stride);
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
497 octave_idx_type dist = (stride == 1 ? npts : 1);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
498
22261
77c4d43e06d1 Use new macros for passing complex arguments to Fortran FFTPACK subroutines
Mike Miller <mtmiller@octave.org>
parents: 22133
diff changeset
499 F77_FUNC (zffti, ZFFTI) (npts, F77_DBLE_CMPLX_ARG (pwsave));
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
500
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
501 for (octave_idx_type k = 0; k < nloop; k++)
10314
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
502 {
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
503 for (octave_idx_type j = 0; j < howmany; j++)
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
504 {
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
505 octave_quit ();
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
506
10314
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
507 for (octave_idx_type l = 0; l < npts; l++)
14844
5bc9b9cb4362 maint: Use Octave coding conventions for cuddled parenthesis in retval assignments.
Rik <octave@nomad.inbox5.com>
parents: 14557
diff changeset
508 prow[l] = retval((l + k*npts)*stride + j*dist);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
509
22402
4caa7b28d183 maint: Style check C++ code in liboctave/
Rik <rik@octave.org>
parents: 22327
diff changeset
510 F77_FUNC (zfftb, ZFFTB) (npts, F77_DBLE_CMPLX_ARG (prow),
4caa7b28d183 maint: Style check C++ code in liboctave/
Rik <rik@octave.org>
parents: 22327
diff changeset
511 F77_DBLE_CMPLX_ARG (pwsave));
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
512
10314
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
513 for (octave_idx_type l = 0; l < npts; l++)
17769
49a5a4be04a1 maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents: 17744
diff changeset
514 retval((l + k*npts)*stride + j*dist) =
49a5a4be04a1 maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents: 17744
diff changeset
515 prow[l] / static_cast<double> (npts);
10314
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
516 }
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
517 }
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
518
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
519 stride *= dv(i);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
520 }
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
521
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
522 return retval;
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
523 }
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
524
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
525 #endif
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
526
4543
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4532
diff changeset
527 // unary operations
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4532
diff changeset
528
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4532
diff changeset
529 boolNDArray
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4532
diff changeset
530 NDArray::operator ! (void) const
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4532
diff changeset
531 {
11130
7c573eb981eb consistently give error for operator not applied to NaN values
John W. Eaton <jwe@octave.org>
parents: 11010
diff changeset
532 if (any_element_is_nan ())
22327
d0562b3159c7 move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
533 octave::err_nan_to_logical_conversion ();
11130
7c573eb981eb consistently give error for operator not applied to NaN values
John W. Eaton <jwe@octave.org>
parents: 11010
diff changeset
534
10362
b47ab50a6aa8 simplify appliers in mx-inlines.cc
Jaroslav Hajek <highegg@gmail.com>
parents: 10352
diff changeset
535 return do_mx_unary_op<bool, double> (*this, mx_inline_not);
4543
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4532
diff changeset
536 }
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4532
diff changeset
537
4634
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
538 bool
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
539 NDArray::any_element_is_negative (bool neg_zero) const
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
540 {
21782
2aef506f3fec use namespace for lo-mappers.h functions
John W. Eaton <jwe@octave.org>
parents: 21724
diff changeset
541 return (neg_zero ? test_all (octave::math::negative_sign)
11010
9478b216752e simplify more array tests
Jaroslav Hajek <highegg@gmail.com>
parents: 11008
diff changeset
542 : do_mx_check<double> (*this, mx_inline_any_negative));
4634
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
543 }
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
544
7922
935be827eaf8 error for NaN values in & and | expressions
John W. Eaton <jwe@octave.org>
parents: 7919
diff changeset
545 bool
13756
6dfebfa334cb allow negative data log plots with OpenGL+FLTK graphics (bug #34232)
John W. Eaton <jwe@octave.org>
parents: 13005
diff changeset
546 NDArray::any_element_is_positive (bool neg_zero) const
6dfebfa334cb allow negative data log plots with OpenGL+FLTK graphics (bug #34232)
John W. Eaton <jwe@octave.org>
parents: 13005
diff changeset
547 {
21782
2aef506f3fec use namespace for lo-mappers.h functions
John W. Eaton <jwe@octave.org>
parents: 21724
diff changeset
548 return (neg_zero ? test_all (octave::math::positive_sign)
13756
6dfebfa334cb allow negative data log plots with OpenGL+FLTK graphics (bug #34232)
John W. Eaton <jwe@octave.org>
parents: 13005
diff changeset
549 : do_mx_check<double> (*this, mx_inline_any_positive));
6dfebfa334cb allow negative data log plots with OpenGL+FLTK graphics (bug #34232)
John W. Eaton <jwe@octave.org>
parents: 13005
diff changeset
550 }
6dfebfa334cb allow negative data log plots with OpenGL+FLTK graphics (bug #34232)
John W. Eaton <jwe@octave.org>
parents: 13005
diff changeset
551
6dfebfa334cb allow negative data log plots with OpenGL+FLTK graphics (bug #34232)
John W. Eaton <jwe@octave.org>
parents: 13005
diff changeset
552 bool
7922
935be827eaf8 error for NaN values in & and | expressions
John W. Eaton <jwe@octave.org>
parents: 7919
diff changeset
553 NDArray::any_element_is_nan (void) const
935be827eaf8 error for NaN values in & and | expressions
John W. Eaton <jwe@octave.org>
parents: 7919
diff changeset
554 {
11008
3622db30ff05 simplify some array tests in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10362
diff changeset
555 return do_mx_check<double> (*this, mx_inline_any_nan);
7922
935be827eaf8 error for NaN values in & and | expressions
John W. Eaton <jwe@octave.org>
parents: 7919
diff changeset
556 }
4634
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
557
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
558 bool
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
559 NDArray::any_element_is_inf_or_nan (void) const
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
560 {
11008
3622db30ff05 simplify some array tests in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10362
diff changeset
561 return ! do_mx_check<double> (*this, mx_inline_all_finite);
4634
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
562 }
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
563
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
564 bool
5943
c038c2947ee1 [project @ 2006-08-18 21:27:03 by jwe]
jwe
parents: 5775
diff changeset
565 NDArray::any_element_not_one_or_zero (void) const
c038c2947ee1 [project @ 2006-08-18 21:27:03 by jwe]
jwe
parents: 5775
diff changeset
566 {
11010
9478b216752e simplify more array tests
Jaroslav Hajek <highegg@gmail.com>
parents: 11008
diff changeset
567 return ! test_all (xis_one_or_zero);
5943
c038c2947ee1 [project @ 2006-08-18 21:27:03 by jwe]
jwe
parents: 5775
diff changeset
568 }
c038c2947ee1 [project @ 2006-08-18 21:27:03 by jwe]
jwe
parents: 5775
diff changeset
569
c038c2947ee1 [project @ 2006-08-18 21:27:03 by jwe]
jwe
parents: 5775
diff changeset
570 bool
6989
2d326000e09b [project @ 2007-10-09 20:32:42 by jwe]
jwe
parents: 5943
diff changeset
571 NDArray::all_elements_are_zero (void) const
2d326000e09b [project @ 2007-10-09 20:32:42 by jwe]
jwe
parents: 5943
diff changeset
572 {
11010
9478b216752e simplify more array tests
Jaroslav Hajek <highegg@gmail.com>
parents: 11008
diff changeset
573 return test_all (xis_zero);
6989
2d326000e09b [project @ 2007-10-09 20:32:42 by jwe]
jwe
parents: 5943
diff changeset
574 }
2d326000e09b [project @ 2007-10-09 20:32:42 by jwe]
jwe
parents: 5943
diff changeset
575
2d326000e09b [project @ 2007-10-09 20:32:42 by jwe]
jwe
parents: 5943
diff changeset
576 bool
4634
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
577 NDArray::all_elements_are_int_or_inf_or_nan (void) const
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
578 {
11010
9478b216752e simplify more array tests
Jaroslav Hajek <highegg@gmail.com>
parents: 11008
diff changeset
579 return test_all (xis_int_or_inf_or_nan);
4634
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
580 }
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
581
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
582 // Return nonzero if any element of M is not an integer. Also extract
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
583 // the largest and smallest values and return them in MAX_VAL and MIN_VAL.
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
584
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
585 bool
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
586 NDArray::all_integers (double& max_val, double& min_val) const
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
587 {
20228
00cf2847355d Deprecate Array::nelem() and Range::nelem() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents: 20218
diff changeset
588 octave_idx_type nel = numel ();
4634
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
589
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
590 if (nel > 0)
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
591 {
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
592 max_val = elem (0);
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
593 min_val = elem (0);
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
594 }
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
595 else
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
596 return false;
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
597
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
598 for (octave_idx_type i = 0; i < nel; i++)
4634
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
599 {
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
600 double val = elem (i);
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
601
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
602 if (val > max_val)
10314
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
603 max_val = val;
4634
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
604
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
605 if (val < min_val)
10314
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
606 min_val = val;
4634
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
607
21782
2aef506f3fec use namespace for lo-mappers.h functions
John W. Eaton <jwe@octave.org>
parents: 21724
diff changeset
608 if (! octave::math::isinteger (val))
10314
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
609 return false;
4634
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
610 }
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
611
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
612 return true;
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
613 }
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
614
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
615 bool
9827
c15a5ed0da58 optimize bsxfun (@power, ...)
Jaroslav Hajek <highegg@gmail.com>
parents: 9812
diff changeset
616 NDArray::all_integers (void) const
c15a5ed0da58 optimize bsxfun (@power, ...)
Jaroslav Hajek <highegg@gmail.com>
parents: 9812
diff changeset
617 {
21782
2aef506f3fec use namespace for lo-mappers.h functions
John W. Eaton <jwe@octave.org>
parents: 21724
diff changeset
618 return test_all (octave::math::isinteger);
9827
c15a5ed0da58 optimize bsxfun (@power, ...)
Jaroslav Hajek <highegg@gmail.com>
parents: 9812
diff changeset
619 }
c15a5ed0da58 optimize bsxfun (@power, ...)
Jaroslav Hajek <highegg@gmail.com>
parents: 9812
diff changeset
620
c15a5ed0da58 optimize bsxfun (@power, ...)
Jaroslav Hajek <highegg@gmail.com>
parents: 9812
diff changeset
621 bool
4634
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
622 NDArray::too_large_for_float (void) const
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
623 {
15212
4bbd3bbb8912 reduce code duplication in too_large_for_float array functions
John W. Eaton <jwe@octave.org>
parents: 15018
diff changeset
624 return test_any (xtoo_large_for_float);
4634
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
625 }
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
626
17769
49a5a4be04a1 maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents: 17744
diff changeset
627 // FIXME: this is not quite the right thing.
4513
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4511
diff changeset
628
4556
773a21e4fce8 [project @ 2003-10-28 05:02:10 by jwe]
jwe
parents: 4543
diff changeset
629 boolNDArray
4513
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4511
diff changeset
630 NDArray::all (int dim) const
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4511
diff changeset
631 {
10362
b47ab50a6aa8 simplify appliers in mx-inlines.cc
Jaroslav Hajek <highegg@gmail.com>
parents: 10352
diff changeset
632 return do_mx_red_op<bool, double> (*this, dim, mx_inline_all);
4513
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4511
diff changeset
633 }
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4511
diff changeset
634
4556
773a21e4fce8 [project @ 2003-10-28 05:02:10 by jwe]
jwe
parents: 4543
diff changeset
635 boolNDArray
4513
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4511
diff changeset
636 NDArray::any (int dim) const
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4511
diff changeset
637 {
10362
b47ab50a6aa8 simplify appliers in mx-inlines.cc
Jaroslav Hajek <highegg@gmail.com>
parents: 10352
diff changeset
638 return do_mx_red_op<bool, double> (*this, dim, mx_inline_any);
4569
01e4957409a4 [project @ 2003-10-30 05:48:17 by jwe]
jwe
parents: 4563
diff changeset
639 }
01e4957409a4 [project @ 2003-10-30 05:48:17 by jwe]
jwe
parents: 4563
diff changeset
640
4584
f7697d703481 [project @ 2003-10-31 19:47:35 by jwe]
jwe
parents: 4569
diff changeset
641 NDArray
4569
01e4957409a4 [project @ 2003-10-30 05:48:17 by jwe]
jwe
parents: 4563
diff changeset
642 NDArray::cumprod (int dim) const
01e4957409a4 [project @ 2003-10-30 05:48:17 by jwe]
jwe
parents: 4563
diff changeset
643 {
10362
b47ab50a6aa8 simplify appliers in mx-inlines.cc
Jaroslav Hajek <highegg@gmail.com>
parents: 10352
diff changeset
644 return do_mx_cum_op<double, double> (*this, dim, mx_inline_cumprod);
4569
01e4957409a4 [project @ 2003-10-30 05:48:17 by jwe]
jwe
parents: 4563
diff changeset
645 }
01e4957409a4 [project @ 2003-10-30 05:48:17 by jwe]
jwe
parents: 4563
diff changeset
646
4584
f7697d703481 [project @ 2003-10-31 19:47:35 by jwe]
jwe
parents: 4569
diff changeset
647 NDArray
4569
01e4957409a4 [project @ 2003-10-30 05:48:17 by jwe]
jwe
parents: 4563
diff changeset
648 NDArray::cumsum (int dim) const
01e4957409a4 [project @ 2003-10-30 05:48:17 by jwe]
jwe
parents: 4563
diff changeset
649 {
10362
b47ab50a6aa8 simplify appliers in mx-inlines.cc
Jaroslav Hajek <highegg@gmail.com>
parents: 10352
diff changeset
650 return do_mx_cum_op<double, double> (*this, dim, mx_inline_cumsum);
4513
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4511
diff changeset
651 }
508238e65af7 [project @ 2003-09-19 21:40:57 by jwe]
jwe
parents: 4511
diff changeset
652
4569
01e4957409a4 [project @ 2003-10-30 05:48:17 by jwe]
jwe
parents: 4563
diff changeset
653 NDArray
01e4957409a4 [project @ 2003-10-30 05:48:17 by jwe]
jwe
parents: 4563
diff changeset
654 NDArray::prod (int dim) const
01e4957409a4 [project @ 2003-10-30 05:48:17 by jwe]
jwe
parents: 4563
diff changeset
655 {
10362
b47ab50a6aa8 simplify appliers in mx-inlines.cc
Jaroslav Hajek <highegg@gmail.com>
parents: 10352
diff changeset
656 return do_mx_red_op<double, double> (*this, dim, mx_inline_prod);
8736
53b4fdeacc2e improve reduction functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8650
diff changeset
657 }
53b4fdeacc2e improve reduction functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8650
diff changeset
658
53b4fdeacc2e improve reduction functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8650
diff changeset
659 NDArray
53b4fdeacc2e improve reduction functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8650
diff changeset
660 NDArray::sum (int dim) const
53b4fdeacc2e improve reduction functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8650
diff changeset
661 {
10362
b47ab50a6aa8 simplify appliers in mx-inlines.cc
Jaroslav Hajek <highegg@gmail.com>
parents: 10352
diff changeset
662 return do_mx_red_op<double, double> (*this, dim, mx_inline_sum);
4569
01e4957409a4 [project @ 2003-10-30 05:48:17 by jwe]
jwe
parents: 4563
diff changeset
663 }
01e4957409a4 [project @ 2003-10-30 05:48:17 by jwe]
jwe
parents: 4563
diff changeset
664
01e4957409a4 [project @ 2003-10-30 05:48:17 by jwe]
jwe
parents: 4563
diff changeset
665 NDArray
9721
192d94cff6c1 improve sum & implement the 'extra' option, refactor some code
Jaroslav Hajek <highegg@gmail.com>
parents: 9601
diff changeset
666 NDArray::xsum (int dim) const
192d94cff6c1 improve sum & implement the 'extra' option, refactor some code
Jaroslav Hajek <highegg@gmail.com>
parents: 9601
diff changeset
667 {
10362
b47ab50a6aa8 simplify appliers in mx-inlines.cc
Jaroslav Hajek <highegg@gmail.com>
parents: 10352
diff changeset
668 return do_mx_red_op<double, double> (*this, dim, mx_inline_xsum);
9721
192d94cff6c1 improve sum & implement the 'extra' option, refactor some code
Jaroslav Hajek <highegg@gmail.com>
parents: 9601
diff changeset
669 }
192d94cff6c1 improve sum & implement the 'extra' option, refactor some code
Jaroslav Hajek <highegg@gmail.com>
parents: 9601
diff changeset
670
192d94cff6c1 improve sum & implement the 'extra' option, refactor some code
Jaroslav Hajek <highegg@gmail.com>
parents: 9601
diff changeset
671 NDArray
4569
01e4957409a4 [project @ 2003-10-30 05:48:17 by jwe]
jwe
parents: 4563
diff changeset
672 NDArray::sumsq (int dim) const
01e4957409a4 [project @ 2003-10-30 05:48:17 by jwe]
jwe
parents: 4563
diff changeset
673 {
10362
b47ab50a6aa8 simplify appliers in mx-inlines.cc
Jaroslav Hajek <highegg@gmail.com>
parents: 10352
diff changeset
674 return do_mx_red_op<double, double> (*this, dim, mx_inline_sumsq);
4569
01e4957409a4 [project @ 2003-10-30 05:48:17 by jwe]
jwe
parents: 4563
diff changeset
675 }
01e4957409a4 [project @ 2003-10-30 05:48:17 by jwe]
jwe
parents: 4563
diff changeset
676
4844
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
677 NDArray
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
678 NDArray::max (int dim) const
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
679 {
10362
b47ab50a6aa8 simplify appliers in mx-inlines.cc
Jaroslav Hajek <highegg@gmail.com>
parents: 10352
diff changeset
680 return do_mx_minmax_op<double> (*this, dim, mx_inline_max);
4844
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
681 }
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
682
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
683 NDArray
9732
b4fdfee405b5 remove ArrayN<T> + fix nonhom. diag-scalar ops
Jaroslav Hajek <highegg@gmail.com>
parents: 9721
diff changeset
684 NDArray::max (Array<octave_idx_type>& idx_arg, int dim) const
4844
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
685 {
10362
b47ab50a6aa8 simplify appliers in mx-inlines.cc
Jaroslav Hajek <highegg@gmail.com>
parents: 10352
diff changeset
686 return do_mx_minmax_op<double> (*this, idx_arg, dim, mx_inline_max);
4844
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
687 }
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
688
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
689 NDArray
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
690 NDArray::min (int dim) const
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
691 {
10362
b47ab50a6aa8 simplify appliers in mx-inlines.cc
Jaroslav Hajek <highegg@gmail.com>
parents: 10352
diff changeset
692 return do_mx_minmax_op<double> (*this, dim, mx_inline_min);
4844
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
693 }
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
694
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
695 NDArray
9732
b4fdfee405b5 remove ArrayN<T> + fix nonhom. diag-scalar ops
Jaroslav Hajek <highegg@gmail.com>
parents: 9721
diff changeset
696 NDArray::min (Array<octave_idx_type>& idx_arg, int dim) const
4844
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
697 {
10362
b47ab50a6aa8 simplify appliers in mx-inlines.cc
Jaroslav Hajek <highegg@gmail.com>
parents: 10352
diff changeset
698 return do_mx_minmax_op<double> (*this, idx_arg, dim, mx_inline_min);
4844
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
699 }
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
700
4915
c638c144d4da [project @ 2004-07-23 19:01:22 by jwe]
jwe
parents: 4902
diff changeset
701 NDArray
8777
724c0f46d9d4 implement cummin/cummax functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8774
diff changeset
702 NDArray::cummax (int dim) const
724c0f46d9d4 implement cummin/cummax functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8774
diff changeset
703 {
10362
b47ab50a6aa8 simplify appliers in mx-inlines.cc
Jaroslav Hajek <highegg@gmail.com>
parents: 10352
diff changeset
704 return do_mx_cumminmax_op<double> (*this, dim, mx_inline_cummax);
8777
724c0f46d9d4 implement cummin/cummax functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8774
diff changeset
705 }
724c0f46d9d4 implement cummin/cummax functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8774
diff changeset
706
724c0f46d9d4 implement cummin/cummax functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8774
diff changeset
707 NDArray
9732
b4fdfee405b5 remove ArrayN<T> + fix nonhom. diag-scalar ops
Jaroslav Hajek <highegg@gmail.com>
parents: 9721
diff changeset
708 NDArray::cummax (Array<octave_idx_type>& idx_arg, int dim) const
8777
724c0f46d9d4 implement cummin/cummax functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8774
diff changeset
709 {
10362
b47ab50a6aa8 simplify appliers in mx-inlines.cc
Jaroslav Hajek <highegg@gmail.com>
parents: 10352
diff changeset
710 return do_mx_cumminmax_op<double> (*this, idx_arg, dim, mx_inline_cummax);
8777
724c0f46d9d4 implement cummin/cummax functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8774
diff changeset
711 }
724c0f46d9d4 implement cummin/cummax functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8774
diff changeset
712
724c0f46d9d4 implement cummin/cummax functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8774
diff changeset
713 NDArray
724c0f46d9d4 implement cummin/cummax functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8774
diff changeset
714 NDArray::cummin (int dim) const
724c0f46d9d4 implement cummin/cummax functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8774
diff changeset
715 {
10362
b47ab50a6aa8 simplify appliers in mx-inlines.cc
Jaroslav Hajek <highegg@gmail.com>
parents: 10352
diff changeset
716 return do_mx_cumminmax_op<double> (*this, dim, mx_inline_cummin);
8777
724c0f46d9d4 implement cummin/cummax functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8774
diff changeset
717 }
724c0f46d9d4 implement cummin/cummax functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8774
diff changeset
718
724c0f46d9d4 implement cummin/cummax functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8774
diff changeset
719 NDArray
9732
b4fdfee405b5 remove ArrayN<T> + fix nonhom. diag-scalar ops
Jaroslav Hajek <highegg@gmail.com>
parents: 9721
diff changeset
720 NDArray::cummin (Array<octave_idx_type>& idx_arg, int dim) const
8777
724c0f46d9d4 implement cummin/cummax functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8774
diff changeset
721 {
10362
b47ab50a6aa8 simplify appliers in mx-inlines.cc
Jaroslav Hajek <highegg@gmail.com>
parents: 10352
diff changeset
722 return do_mx_cumminmax_op<double> (*this, idx_arg, dim, mx_inline_cummin);
8777
724c0f46d9d4 implement cummin/cummax functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8774
diff changeset
723 }
724c0f46d9d4 implement cummin/cummax functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8774
diff changeset
724
724c0f46d9d4 implement cummin/cummax functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8774
diff changeset
725 NDArray
9513
9f870f73ab7d implement built-in diff
Jaroslav Hajek <highegg@gmail.com>
parents: 9469
diff changeset
726 NDArray::diff (octave_idx_type order, int dim) const
9f870f73ab7d implement built-in diff
Jaroslav Hajek <highegg@gmail.com>
parents: 9469
diff changeset
727 {
10362
b47ab50a6aa8 simplify appliers in mx-inlines.cc
Jaroslav Hajek <highegg@gmail.com>
parents: 10352
diff changeset
728 return do_mx_diff_op<double> (*this, dim, order, mx_inline_diff);
9513
9f870f73ab7d implement built-in diff
Jaroslav Hajek <highegg@gmail.com>
parents: 9469
diff changeset
729 }
9f870f73ab7d implement built-in diff
Jaroslav Hajek <highegg@gmail.com>
parents: 9469
diff changeset
730
9f870f73ab7d implement built-in diff
Jaroslav Hajek <highegg@gmail.com>
parents: 9469
diff changeset
731 NDArray
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
732 NDArray::concat (const NDArray& rb, const Array<octave_idx_type>& ra_idx)
4758
a308566c8b42 [project @ 2004-02-13 23:01:34 by jwe]
jwe
parents: 4687
diff changeset
733 {
5073
e71be9c548f2 [project @ 2004-11-09 18:31:25 by jwe]
jwe
parents: 4940
diff changeset
734 if (rb.numel () > 0)
e71be9c548f2 [project @ 2004-11-09 18:31:25 by jwe]
jwe
parents: 4940
diff changeset
735 insert (rb, ra_idx);
e71be9c548f2 [project @ 2004-11-09 18:31:25 by jwe]
jwe
parents: 4940
diff changeset
736 return *this;
e71be9c548f2 [project @ 2004-11-09 18:31:25 by jwe]
jwe
parents: 4940
diff changeset
737 }
e71be9c548f2 [project @ 2004-11-09 18:31:25 by jwe]
jwe
parents: 4940
diff changeset
738
e71be9c548f2 [project @ 2004-11-09 18:31:25 by jwe]
jwe
parents: 4940
diff changeset
739 ComplexNDArray
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
740 NDArray::concat (const ComplexNDArray& rb, const Array<octave_idx_type>& ra_idx)
5073
e71be9c548f2 [project @ 2004-11-09 18:31:25 by jwe]
jwe
parents: 4940
diff changeset
741 {
e71be9c548f2 [project @ 2004-11-09 18:31:25 by jwe]
jwe
parents: 4940
diff changeset
742 ComplexNDArray retval (*this);
4940
954cc2ba6a49 [project @ 2004-08-24 19:30:31 by jwe]
jwe
parents: 4915
diff changeset
743 if (rb.numel () > 0)
4915
c638c144d4da [project @ 2004-07-23 19:01:22 by jwe]
jwe
parents: 4902
diff changeset
744 retval.insert (rb, ra_idx);
c638c144d4da [project @ 2004-07-23 19:01:22 by jwe]
jwe
parents: 4902
diff changeset
745 return retval;
4758
a308566c8b42 [project @ 2004-02-13 23:01:34 by jwe]
jwe
parents: 4687
diff changeset
746 }
a308566c8b42 [project @ 2004-02-13 23:01:34 by jwe]
jwe
parents: 4687
diff changeset
747
5073
e71be9c548f2 [project @ 2004-11-09 18:31:25 by jwe]
jwe
parents: 4940
diff changeset
748 charNDArray
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
749 NDArray::concat (const charNDArray& rb, const Array<octave_idx_type>& ra_idx)
5073
e71be9c548f2 [project @ 2004-11-09 18:31:25 by jwe]
jwe
parents: 4940
diff changeset
750 {
e71be9c548f2 [project @ 2004-11-09 18:31:25 by jwe]
jwe
parents: 4940
diff changeset
751 charNDArray retval (dims ());
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
752 octave_idx_type nel = numel ();
5073
e71be9c548f2 [project @ 2004-11-09 18:31:25 by jwe]
jwe
parents: 4940
diff changeset
753
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
754 for (octave_idx_type i = 0; i < nel; i++)
5073
e71be9c548f2 [project @ 2004-11-09 18:31:25 by jwe]
jwe
parents: 4940
diff changeset
755 {
e71be9c548f2 [project @ 2004-11-09 18:31:25 by jwe]
jwe
parents: 4940
diff changeset
756 double d = elem (i);
e71be9c548f2 [project @ 2004-11-09 18:31:25 by jwe]
jwe
parents: 4940
diff changeset
757
21782
2aef506f3fec use namespace for lo-mappers.h functions
John W. Eaton <jwe@octave.org>
parents: 21724
diff changeset
758 if (octave::math::isnan (d))
21136
7cac4e7458f2 maint: clean up code around calls to current_liboctave_error_handler.
Rik <rik@octave.org>
parents: 21100
diff changeset
759 (*current_liboctave_error_handler)
7cac4e7458f2 maint: clean up code around calls to current_liboctave_error_handler.
Rik <rik@octave.org>
parents: 21100
diff changeset
760 ("invalid conversion from NaN to character");
7cac4e7458f2 maint: clean up code around calls to current_liboctave_error_handler.
Rik <rik@octave.org>
parents: 21100
diff changeset
761
21782
2aef506f3fec use namespace for lo-mappers.h functions
John W. Eaton <jwe@octave.org>
parents: 21724
diff changeset
762 octave_idx_type ival = octave::math::nint_big (d);
5073
e71be9c548f2 [project @ 2004-11-09 18:31:25 by jwe]
jwe
parents: 4940
diff changeset
763
21136
7cac4e7458f2 maint: clean up code around calls to current_liboctave_error_handler.
Rik <rik@octave.org>
parents: 21100
diff changeset
764 if (ival < 0 || ival > std::numeric_limits<unsigned char>::max ())
7cac4e7458f2 maint: clean up code around calls to current_liboctave_error_handler.
Rik <rik@octave.org>
parents: 21100
diff changeset
765 // FIXME: is there something better to do? Should we warn the user?
7cac4e7458f2 maint: clean up code around calls to current_liboctave_error_handler.
Rik <rik@octave.org>
parents: 21100
diff changeset
766 ival = 0;
5073
e71be9c548f2 [project @ 2004-11-09 18:31:25 by jwe]
jwe
parents: 4940
diff changeset
767
21136
7cac4e7458f2 maint: clean up code around calls to current_liboctave_error_handler.
Rik <rik@octave.org>
parents: 21100
diff changeset
768 retval.elem (i) = static_cast<char>(ival);
5073
e71be9c548f2 [project @ 2004-11-09 18:31:25 by jwe]
jwe
parents: 4940
diff changeset
769 }
e71be9c548f2 [project @ 2004-11-09 18:31:25 by jwe]
jwe
parents: 4940
diff changeset
770
23577
80c42f4cca13 maint: Deprecate is_empty and replace with isempty.
Rik <rik@octave.org>
parents: 23564
diff changeset
771 if (rb.isempty ())
5073
e71be9c548f2 [project @ 2004-11-09 18:31:25 by jwe]
jwe
parents: 4940
diff changeset
772 return retval;
e71be9c548f2 [project @ 2004-11-09 18:31:25 by jwe]
jwe
parents: 4940
diff changeset
773
e71be9c548f2 [project @ 2004-11-09 18:31:25 by jwe]
jwe
parents: 4940
diff changeset
774 retval.insert (rb, ra_idx);
e71be9c548f2 [project @ 2004-11-09 18:31:25 by jwe]
jwe
parents: 4940
diff changeset
775 return retval;
e71be9c548f2 [project @ 2004-11-09 18:31:25 by jwe]
jwe
parents: 4940
diff changeset
776 }
e71be9c548f2 [project @ 2004-11-09 18:31:25 by jwe]
jwe
parents: 4940
diff changeset
777
4634
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
778 NDArray
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
779 real (const ComplexNDArray& a)
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
780 {
10362
b47ab50a6aa8 simplify appliers in mx-inlines.cc
Jaroslav Hajek <highegg@gmail.com>
parents: 10352
diff changeset
781 return do_mx_unary_op<double, Complex> (a, mx_inline_real);
4634
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
782 }
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
783
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
784 NDArray
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
785 imag (const ComplexNDArray& a)
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
786 {
10362
b47ab50a6aa8 simplify appliers in mx-inlines.cc
Jaroslav Hajek <highegg@gmail.com>
parents: 10352
diff changeset
787 return do_mx_unary_op<double, Complex> (a, mx_inline_imag);
4634
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
788 }
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
789
4915
c638c144d4da [project @ 2004-07-23 19:01:22 by jwe]
jwe
parents: 4902
diff changeset
790 NDArray&
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
791 NDArray::insert (const NDArray& a, octave_idx_type r, octave_idx_type c)
4915
c638c144d4da [project @ 2004-07-23 19:01:22 by jwe]
jwe
parents: 4902
diff changeset
792 {
c638c144d4da [project @ 2004-07-23 19:01:22 by jwe]
jwe
parents: 4902
diff changeset
793 Array<double>::insert (a, r, c);
c638c144d4da [project @ 2004-07-23 19:01:22 by jwe]
jwe
parents: 4902
diff changeset
794 return *this;
c638c144d4da [project @ 2004-07-23 19:01:22 by jwe]
jwe
parents: 4902
diff changeset
795 }
c638c144d4da [project @ 2004-07-23 19:01:22 by jwe]
jwe
parents: 4902
diff changeset
796
c638c144d4da [project @ 2004-07-23 19:01:22 by jwe]
jwe
parents: 4902
diff changeset
797 NDArray&
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
798 NDArray::insert (const NDArray& a, const Array<octave_idx_type>& ra_idx)
4915
c638c144d4da [project @ 2004-07-23 19:01:22 by jwe]
jwe
parents: 4902
diff changeset
799 {
c638c144d4da [project @ 2004-07-23 19:01:22 by jwe]
jwe
parents: 4902
diff changeset
800 Array<double>::insert (a, ra_idx);
c638c144d4da [project @ 2004-07-23 19:01:22 by jwe]
jwe
parents: 4902
diff changeset
801 return *this;
c638c144d4da [project @ 2004-07-23 19:01:22 by jwe]
jwe
parents: 4902
diff changeset
802 }
c638c144d4da [project @ 2004-07-23 19:01:22 by jwe]
jwe
parents: 4902
diff changeset
803
4634
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
804 NDArray
4569
01e4957409a4 [project @ 2003-10-30 05:48:17 by jwe]
jwe
parents: 4563
diff changeset
805 NDArray::abs (void) const
01e4957409a4 [project @ 2003-10-30 05:48:17 by jwe]
jwe
parents: 4563
diff changeset
806 {
10362
b47ab50a6aa8 simplify appliers in mx-inlines.cc
Jaroslav Hajek <highegg@gmail.com>
parents: 10352
diff changeset
807 return do_mx_unary_map<double, double, std::abs> (*this);
4569
01e4957409a4 [project @ 2003-10-30 05:48:17 by jwe]
jwe
parents: 4563
diff changeset
808 }
01e4957409a4 [project @ 2003-10-30 05:48:17 by jwe]
jwe
parents: 4563
diff changeset
809
8998
a48fba01e4ac optimize isnan/isinf/isfinite mappers
Jaroslav Hajek <highegg@gmail.com>
parents: 8981
diff changeset
810 boolNDArray
a48fba01e4ac optimize isnan/isinf/isfinite mappers
Jaroslav Hajek <highegg@gmail.com>
parents: 8981
diff changeset
811 NDArray::isnan (void) const
a48fba01e4ac optimize isnan/isinf/isfinite mappers
Jaroslav Hajek <highegg@gmail.com>
parents: 8981
diff changeset
812 {
21782
2aef506f3fec use namespace for lo-mappers.h functions
John W. Eaton <jwe@octave.org>
parents: 21724
diff changeset
813 return do_mx_unary_map<bool, double, octave::math::isnan> (*this);
8998
a48fba01e4ac optimize isnan/isinf/isfinite mappers
Jaroslav Hajek <highegg@gmail.com>
parents: 8981
diff changeset
814 }
a48fba01e4ac optimize isnan/isinf/isfinite mappers
Jaroslav Hajek <highegg@gmail.com>
parents: 8981
diff changeset
815
a48fba01e4ac optimize isnan/isinf/isfinite mappers
Jaroslav Hajek <highegg@gmail.com>
parents: 8981
diff changeset
816 boolNDArray
a48fba01e4ac optimize isnan/isinf/isfinite mappers
Jaroslav Hajek <highegg@gmail.com>
parents: 8981
diff changeset
817 NDArray::isinf (void) const
a48fba01e4ac optimize isnan/isinf/isfinite mappers
Jaroslav Hajek <highegg@gmail.com>
parents: 8981
diff changeset
818 {
21782
2aef506f3fec use namespace for lo-mappers.h functions
John W. Eaton <jwe@octave.org>
parents: 21724
diff changeset
819 return do_mx_unary_map<bool, double, octave::math::isinf> (*this);
8998
a48fba01e4ac optimize isnan/isinf/isfinite mappers
Jaroslav Hajek <highegg@gmail.com>
parents: 8981
diff changeset
820 }
a48fba01e4ac optimize isnan/isinf/isfinite mappers
Jaroslav Hajek <highegg@gmail.com>
parents: 8981
diff changeset
821
a48fba01e4ac optimize isnan/isinf/isfinite mappers
Jaroslav Hajek <highegg@gmail.com>
parents: 8981
diff changeset
822 boolNDArray
a48fba01e4ac optimize isnan/isinf/isfinite mappers
Jaroslav Hajek <highegg@gmail.com>
parents: 8981
diff changeset
823 NDArray::isfinite (void) const
a48fba01e4ac optimize isnan/isinf/isfinite mappers
Jaroslav Hajek <highegg@gmail.com>
parents: 8981
diff changeset
824 {
23564
7049da1648c0 Deprecate octave::math::finite in favor of octave::math::isfinite.
Rik <rik@octave.org>
parents: 23461
diff changeset
825 return do_mx_unary_map<bool, double, octave::math::isfinite> (*this);
8998
a48fba01e4ac optimize isnan/isinf/isfinite mappers
Jaroslav Hajek <highegg@gmail.com>
parents: 8981
diff changeset
826 }
a48fba01e4ac optimize isnan/isinf/isfinite mappers
Jaroslav Hajek <highegg@gmail.com>
parents: 8981
diff changeset
827
4532
01ee68d18069 [project @ 2003-10-10 00:49:54 by jwe]
jwe
parents: 4513
diff changeset
828 void
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
829 NDArray::increment_index (Array<octave_idx_type>& ra_idx,
10314
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
830 const dim_vector& dimensions,
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
831 int start_dimension)
4532
01ee68d18069 [project @ 2003-10-10 00:49:54 by jwe]
jwe
parents: 4513
diff changeset
832 {
01ee68d18069 [project @ 2003-10-10 00:49:54 by jwe]
jwe
parents: 4513
diff changeset
833 ::increment_index (ra_idx, dimensions, start_dimension);
01ee68d18069 [project @ 2003-10-10 00:49:54 by jwe]
jwe
parents: 4513
diff changeset
834 }
01ee68d18069 [project @ 2003-10-10 00:49:54 by jwe]
jwe
parents: 4513
diff changeset
835
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
836 octave_idx_type
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
837 NDArray::compute_index (Array<octave_idx_type>& ra_idx,
10314
07ebe522dac2 untabify liboctave C++ sources
John W. Eaton <jwe@octave.org>
parents: 10158
diff changeset
838 const dim_vector& dimensions)
4556
773a21e4fce8 [project @ 2003-10-28 05:02:10 by jwe]
jwe
parents: 4543
diff changeset
839 {
773a21e4fce8 [project @ 2003-10-28 05:02:10 by jwe]
jwe
parents: 4543
diff changeset
840 return ::compute_index (ra_idx, dimensions);
773a21e4fce8 [project @ 2003-10-28 05:02:10 by jwe]
jwe
parents: 4543
diff changeset
841 }
773a21e4fce8 [project @ 2003-10-28 05:02:10 by jwe]
jwe
parents: 4543
diff changeset
842
7503
8c32f95c2639 convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
843 NDArray
7620
36594d5bbe13 Move diag function into the octave_value class
David Bateman <dbateman@free.fr>
parents: 7600
diff changeset
844 NDArray::diag (octave_idx_type k) const
36594d5bbe13 Move diag function into the octave_value class
David Bateman <dbateman@free.fr>
parents: 7600
diff changeset
845 {
10350
12884915a8e4 merge MArray classes & improve Array interface
Jaroslav Hajek <highegg@gmail.com>
parents: 10329
diff changeset
846 return MArray<double>::diag (k);
7620
36594d5bbe13 Move diag function into the octave_value class
David Bateman <dbateman@free.fr>
parents: 7600
diff changeset
847 }
36594d5bbe13 Move diag function into the octave_value class
David Bateman <dbateman@free.fr>
parents: 7600
diff changeset
848
14557
e8e86ae3abbc make diag (x, m, n) return a proper diagonal matrix object (bug #36099)
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
849 NDArray
e8e86ae3abbc make diag (x, m, n) return a proper diagonal matrix object (bug #36099)
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
850 NDArray::diag (octave_idx_type m, octave_idx_type n) const
e8e86ae3abbc make diag (x, m, n) return a proper diagonal matrix object (bug #36099)
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
851 {
e8e86ae3abbc make diag (x, m, n) return a proper diagonal matrix object (bug #36099)
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
852 return MArray<double>::diag (m, n);
e8e86ae3abbc make diag (x, m, n) return a proper diagonal matrix object (bug #36099)
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
853 }
e8e86ae3abbc make diag (x, m, n) return a proper diagonal matrix object (bug #36099)
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
854
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
855 // This contains no information on the array structure !!!
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
856 std::ostream&
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
857 operator << (std::ostream& os, const NDArray& a)
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
858 {
20228
00cf2847355d Deprecate Array::nelem() and Range::nelem() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents: 20218
diff changeset
859 octave_idx_type nel = a.numel ();
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
860
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
861 for (octave_idx_type i = 0; i < nel; i++)
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
862 {
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
863 os << " ";
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
864 octave_write_double (os, a.elem (i));
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
865 os << "\n";
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
866 }
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
867 return os;
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
868 }
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
869
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
870 std::istream&
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
871 operator >> (std::istream& is, NDArray& a)
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
872 {
20228
00cf2847355d Deprecate Array::nelem() and Range::nelem() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents: 20218
diff changeset
873 octave_idx_type nel = a.numel ();
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
874
8999
dc07bc4157b8 allow empty matrices in stream input operators
Jaroslav Hajek <highegg@gmail.com>
parents: 8998
diff changeset
875 if (nel > 0)
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
876 {
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
877 double tmp;
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5164
diff changeset
878 for (octave_idx_type i = 0; i < nel; i++)
17769
49a5a4be04a1 maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents: 17744
diff changeset
879 {
49a5a4be04a1 maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents: 17744
diff changeset
880 tmp = octave_read_value<double> (is);
49a5a4be04a1 maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents: 17744
diff changeset
881 if (is)
49a5a4be04a1 maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents: 17744
diff changeset
882 a.elem (i) = tmp;
49a5a4be04a1 maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents: 17744
diff changeset
883 else
21169
40051830f89b maint: Replace more instances of goto in liboctave with other constructs.
Rik <rik@octave.org>
parents: 21136
diff changeset
884 return is;
17769
49a5a4be04a1 maint: Use GNU style coding conventions for code in liboctave/
Rik <rik@octave.org>
parents: 17744
diff changeset
885 }
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
886 }
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
887
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
888 return is;
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
889 }
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
890
10329
83fa590b8a09 simplify min/max definitions in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 10314
diff changeset
891 MINMAX_FCNS (NDArray, double)
4844
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
892
9578
7dafdb8b062f refactor comparison ops implementations
Jaroslav Hajek <highegg@gmail.com>
parents: 9553
diff changeset
893 NDS_CMP_OPS (NDArray, double)
9550
3d6a9aea2aea refactor binary & bool ops in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 9523
diff changeset
894 NDS_BOOL_OPS (NDArray, double)
4543
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4532
diff changeset
895
9578
7dafdb8b062f refactor comparison ops implementations
Jaroslav Hajek <highegg@gmail.com>
parents: 9553
diff changeset
896 SND_CMP_OPS (double, NDArray)
9550
3d6a9aea2aea refactor binary & bool ops in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 9523
diff changeset
897 SND_BOOL_OPS (double, NDArray)
4543
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4532
diff changeset
898
9578
7dafdb8b062f refactor comparison ops implementations
Jaroslav Hajek <highegg@gmail.com>
parents: 9553
diff changeset
899 NDND_CMP_OPS (NDArray, NDArray)
9550
3d6a9aea2aea refactor binary & bool ops in liboctave
Jaroslav Hajek <highegg@gmail.com>
parents: 9523
diff changeset
900 NDND_BOOL_OPS (NDArray, NDArray)
4543
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4532
diff changeset
901
9743
26abff55f6fe optimize bsxfun for common built-in operations
Jaroslav Hajek <highegg@gmail.com>
parents: 9732
diff changeset
902 BSXFUN_STDOP_DEFS_MXLOOP (NDArray)
26abff55f6fe optimize bsxfun for common built-in operations
Jaroslav Hajek <highegg@gmail.com>
parents: 9732
diff changeset
903 BSXFUN_STDREL_DEFS_MXLOOP (NDArray)
26abff55f6fe optimize bsxfun for common built-in operations
Jaroslav Hajek <highegg@gmail.com>
parents: 9732
diff changeset
904
9827
c15a5ed0da58 optimize bsxfun (@power, ...)
Jaroslav Hajek <highegg@gmail.com>
parents: 9812
diff changeset
905 BSXFUN_OP_DEF_MXLOOP (pow, NDArray, mx_inline_pow)
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
906 BSXFUN_OP2_DEF_MXLOOP (pow, ComplexNDArray, ComplexNDArray,
9827
c15a5ed0da58 optimize bsxfun (@power, ...)
Jaroslav Hajek <highegg@gmail.com>
parents: 9812
diff changeset
907 NDArray, mx_inline_pow)
13005
4061106b1c4b Enable automatic bsxfun for power operators
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 11586
diff changeset
908 BSXFUN_OP2_DEF_MXLOOP (pow, ComplexNDArray, NDArray,
4061106b1c4b Enable automatic bsxfun for power operators
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 11586
diff changeset
909 ComplexNDArray, mx_inline_pow)