annotate liboctave/CNDArray.cc @ 8920:eb63fbe60fab

update copyright notices
author John W. Eaton <jwe@octave.org>
date Sat, 07 Mar 2009 10:41:27 -0500
parents 724c0f46d9d4
children d91fa4b20bbb
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4514
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
1 // N-D Array manipulations.
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
2 /*
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
3
8920
eb63fbe60fab update copyright notices
John W. Eaton <jwe@octave.org>
parents: 8777
diff changeset
4 Copyright (C) 1996, 1997, 2003, 2004, 2005, 2006, 2007, 2008,
eb63fbe60fab update copyright notices
John W. Eaton <jwe@octave.org>
parents: 8777
diff changeset
5 2009 John W. Eaton
4514
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
6
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
7 This file is part of Octave.
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
8
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
9 Octave is free software; you can redistribute it and/or modify it
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
10 under the terms of the GNU General Public License as published by the
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 5775
diff changeset
11 Free Software Foundation; either version 3 of the License, or (at your
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 5775
diff changeset
12 option) any later version.
4514
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
13
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
14 Octave is distributed in the hope that it will be useful, but WITHOUT
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
15 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
16 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
17 for more details.
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
18
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
19 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: 5775
diff changeset
20 along with Octave; see the file COPYING. If not, see
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 5775
diff changeset
21 <http://www.gnu.org/licenses/>.
4514
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
22
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
23 */
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
24
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
25 #ifdef HAVE_CONFIG_H
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
26 #include <config.h>
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
27 #endif
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
28
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
29 #include <cfloat>
5164
57077d0ddc8e [project @ 2005-02-25 19:55:24 by jwe]
jwe
parents: 5139
diff changeset
30
4780
5eb5b8aaed8a [project @ 2004-02-17 15:32:13 by jwe]
jwe
parents: 4773
diff changeset
31 #include <vector>
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
32
4588
19bfd295f400 [project @ 2003-11-10 17:18:48 by jwe]
jwe
parents: 4584
diff changeset
33 #include "Array-util.h"
4514
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
34 #include "CNDArray.h"
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
35 #include "mx-base.h"
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
36 #include "f77-fcn.h"
7503
8c32f95c2639 convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
37 #include "functor.h"
4514
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
38 #include "lo-ieee.h"
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
39 #include "lo-mappers.h"
8377
25bc2d31e1bf improve OCTAVE_LOCAL_BUFFER
Jaroslav Hajek <highegg@gmail.com>
parents: 7922
diff changeset
40 #include "oct-locbuf.h"
8774
b756ce0002db split implementation and interface in mx-op-defs and MArray-defs
Jaroslav Hajek <highegg@gmail.com>
parents: 8751
diff changeset
41 #include "mx-op-defs.h"
4514
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
42
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
43 #if defined (HAVE_FFTW3)
4780
5eb5b8aaed8a [project @ 2004-02-17 15:32:13 by jwe]
jwe
parents: 4773
diff changeset
44 #include "oct-fftw.h"
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
45 #else
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
46 extern "C"
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
47 {
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
48 // Note that the original complex fft routines were not written for
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
49 // double complex arguments. They have been modified by adding an
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
50 // implicit double precision (a-h,o-z) statement at the beginning of
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
51 // each subroutine.
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
52
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
53 F77_RET_T
7789
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7620
diff changeset
54 F77_FUNC (zffti, ZFFTI) (const octave_idx_type&, Complex*);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
55
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
56 F77_RET_T
7789
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7620
diff changeset
57 F77_FUNC (zfftf, ZFFTF) (const octave_idx_type&, Complex*, Complex*);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
58
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
59 F77_RET_T
7789
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7620
diff changeset
60 F77_FUNC (zfftb, ZFFTB) (const octave_idx_type&, Complex*, Complex*);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
61 }
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
62 #endif
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
63
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
64 #if defined (HAVE_FFTW3)
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
65 ComplexNDArray
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
66 ComplexNDArray::fourier (int dim) const
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
67 {
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
68 dim_vector dv = dims ();
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
69
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
70 if (dim > dv.length () || dim < 0)
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
71 return ComplexNDArray ();
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
72
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
73 octave_idx_type stride = 1;
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
74 octave_idx_type n = dv(dim);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
75
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
76 for (int i = 0; i < dim; i++)
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
77 stride *= dv(i);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
78
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
79 octave_idx_type howmany = numel () / dv (dim);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
80 howmany = (stride == 1 ? howmany : (howmany > stride ? stride : howmany));
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
81 octave_idx_type nloop = (stride == 1 ? 1 : numel () / dv (dim) / stride);
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
82 octave_idx_type dist = (stride == 1 ? n : 1);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
83
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
84 const Complex *in (fortran_vec ());
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
85 ComplexNDArray retval (dv);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
86 Complex *out (retval.fortran_vec ());
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
87
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
88 // Need to be careful here about the distance between fft's
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
89 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
90 octave_fftw::fft (in + k * stride * n, out + k * stride * n,
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
91 n, howmany, stride, dist);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
92
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
93 return retval;
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
94 }
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
95
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
96 ComplexNDArray
4816
4908c82cd1a1 [project @ 2004-03-04 18:13:46 by jwe]
jwe
parents: 4806
diff changeset
97 ComplexNDArray::ifourier (int dim) const
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
98 {
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
99 dim_vector dv = dims ();
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
100
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
101 if (dim > dv.length () || dim < 0)
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
102 return ComplexNDArray ();
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
103
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
104 octave_idx_type stride = 1;
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
105 octave_idx_type n = dv(dim);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
106
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
107 for (int i = 0; i < dim; i++)
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
108 stride *= dv(i);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
109
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
110 octave_idx_type howmany = numel () / dv (dim);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
111 howmany = (stride == 1 ? howmany : (howmany > stride ? stride : howmany));
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
112 octave_idx_type nloop = (stride == 1 ? 1 : numel () / dv (dim) / stride);
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
113 octave_idx_type dist = (stride == 1 ? n : 1);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
114
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
115 const Complex *in (fortran_vec ());
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
116 ComplexNDArray retval (dv);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
117 Complex *out (retval.fortran_vec ());
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
118
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
119 // Need to be careful here about the distance between fft's
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
120 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
121 octave_fftw::ifft (in + k * stride * n, out + k * stride * n,
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
122 n, howmany, stride, dist);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
123
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
124 return retval;
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
125 }
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 ComplexNDArray
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
128 ComplexNDArray::fourier2d (void) const
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
129 {
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
130 dim_vector dv = dims();
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
131 if (dv.length () < 2)
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
132 return ComplexNDArray ();
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
133
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
134 dim_vector dv2(dv(0), dv(1));
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
135 const Complex *in = fortran_vec ();
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
136 ComplexNDArray retval (dv);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
137 Complex *out = retval.fortran_vec ();
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
138 octave_idx_type howmany = numel() / dv(0) / dv(1);
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
139 octave_idx_type dist = dv(0) * dv(1);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
140
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
141 for (octave_idx_type i=0; i < howmany; i++)
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
142 octave_fftw::fftNd (in + i*dist, out + i*dist, 2, dv2);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
143
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
144 return retval;
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
145 }
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
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
148 ComplexNDArray::ifourier2d (void) const
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 dim_vector dv = dims();
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
151 if (dv.length () < 2)
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
152 return ComplexNDArray ();
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
153
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
154 dim_vector dv2(dv(0), dv(1));
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
155 const Complex *in = fortran_vec ();
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
156 ComplexNDArray retval (dv);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
157 Complex *out = retval.fortran_vec ();
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
158 octave_idx_type howmany = numel() / dv(0) / dv(1);
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
159 octave_idx_type dist = dv(0) * dv(1);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
160
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
161 for (octave_idx_type i=0; i < howmany; i++)
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
162 octave_fftw::ifftNd (in + i*dist, out + i*dist, 2, dv2);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
163
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
164 return retval;
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
165 }
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
166
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
167 ComplexNDArray
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
168 ComplexNDArray::fourierNd (void) const
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
169 {
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
170 dim_vector dv = dims ();
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
171 int rank = dv.length ();
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
172
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
173 const Complex *in (fortran_vec ());
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
174 ComplexNDArray retval (dv);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
175 Complex *out (retval.fortran_vec ());
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 octave_fftw::fftNd (in, out, rank, dv);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
178
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
179 return retval;
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
180 }
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
181
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
182 ComplexNDArray
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
183 ComplexNDArray::ifourierNd (void) const
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
184 {
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
185 dim_vector dv = dims ();
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
186 int rank = dv.length ();
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
187
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
188 const Complex *in (fortran_vec ());
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
189 ComplexNDArray retval (dv);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
190 Complex *out (retval.fortran_vec ());
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
191
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
192 octave_fftw::ifftNd (in, out, rank, dv);
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 #else
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
198 ComplexNDArray
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
199 ComplexNDArray::fourier (int dim) const
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
200 {
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
201 dim_vector dv = dims ();
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 if (dim > dv.length () || dim < 0)
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
204 return ComplexNDArray ();
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
205
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
206 ComplexNDArray retval (dv);
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
207 octave_idx_type npts = dv(dim);
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
208 octave_idx_type nn = 4*npts+15;
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
209 Array<Complex> wsave (nn);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
210 Complex *pwsave = wsave.fortran_vec ();
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 OCTAVE_LOCAL_BUFFER (Complex, tmp, npts);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
213
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
214 octave_idx_type stride = 1;
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
215
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
216 for (int i = 0; i < dim; i++)
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
217 stride *= dv(i);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
218
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
219 octave_idx_type howmany = numel () / npts;
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
220 howmany = (stride == 1 ? howmany : (howmany > stride ? stride : howmany));
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
221 octave_idx_type nloop = (stride == 1 ? 1 : numel () / npts / stride);
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
222 octave_idx_type dist = (stride == 1 ? npts : 1);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
223
7789
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7620
diff changeset
224 F77_FUNC (zffti, ZFFTI) (npts, pwsave);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
225
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
226 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
227 {
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
228 for (octave_idx_type j = 0; j < howmany; j++)
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
229 {
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
230 OCTAVE_QUIT;
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
231
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
232 for (octave_idx_type i = 0; i < npts; i++)
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
233 tmp[i] = elem((i + k*npts)*stride + j*dist);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
234
7789
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7620
diff changeset
235 F77_FUNC (zfftf, ZFFTF) (npts, tmp, pwsave);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
236
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
237 for (octave_idx_type i = 0; i < npts; i++)
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
238 retval ((i + k*npts)*stride + j*dist) = tmp[i];
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 }
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
241
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
242 return retval;
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
243 }
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
244
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
245 ComplexNDArray
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
246 ComplexNDArray::ifourier (int dim) const
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
247 {
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
248 dim_vector dv = dims ();
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 if (dim > dv.length () || dim < 0)
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
251 return ComplexNDArray ();
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
252
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
253 ComplexNDArray retval (dv);
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
254 octave_idx_type npts = dv(dim);
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
255 octave_idx_type nn = 4*npts+15;
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
256 Array<Complex> wsave (nn);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
257 Complex *pwsave = wsave.fortran_vec ();
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
258
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
259 OCTAVE_LOCAL_BUFFER (Complex, tmp, npts);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
260
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
261 octave_idx_type stride = 1;
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
262
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
263 for (int i = 0; i < dim; i++)
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
264 stride *= dv(i);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
265
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
266 octave_idx_type howmany = numel () / npts;
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
267 howmany = (stride == 1 ? howmany : (howmany > stride ? stride : howmany));
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
268 octave_idx_type nloop = (stride == 1 ? 1 : numel () / npts / stride);
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
269 octave_idx_type dist = (stride == 1 ? npts : 1);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
270
7789
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7620
diff changeset
271 F77_FUNC (zffti, ZFFTI) (npts, pwsave);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
272
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
273 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
274 {
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
275 for (octave_idx_type j = 0; j < howmany; j++)
4773
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 OCTAVE_QUIT;
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
278
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
279 for (octave_idx_type i = 0; i < npts; i++)
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
280 tmp[i] = elem((i + k*npts)*stride + j*dist);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
281
7789
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7620
diff changeset
282 F77_FUNC (zfftb, ZFFTB) (npts, tmp, pwsave);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
283
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
284 for (octave_idx_type i = 0; i < npts; i++)
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
285 retval ((i + k*npts)*stride + j*dist) = tmp[i] /
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
286 static_cast<double> (npts);
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 }
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
289
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
290 return retval;
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
291 }
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
292
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
293 ComplexNDArray
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
294 ComplexNDArray::fourier2d (void) const
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
295 {
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
296 dim_vector dv = dims ();
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
297 dim_vector dv2 (dv(0), dv(1));
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
298 int rank = 2;
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
299 ComplexNDArray retval (*this);
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
300 octave_idx_type stride = 1;
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
301
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
302 for (int i = 0; i < rank; i++)
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
303 {
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
304 octave_idx_type npts = dv2(i);
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
305 octave_idx_type nn = 4*npts+15;
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
306 Array<Complex> wsave (nn);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
307 Complex *pwsave = wsave.fortran_vec ();
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
308 Array<Complex> row (npts);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
309 Complex *prow = row.fortran_vec ();
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
310
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
311 octave_idx_type howmany = numel () / npts;
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
312 howmany = (stride == 1 ? howmany :
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
313 (howmany > stride ? stride : howmany));
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
314 octave_idx_type nloop = (stride == 1 ? 1 : numel () / npts / stride);
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
315 octave_idx_type dist = (stride == 1 ? npts : 1);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
316
7789
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7620
diff changeset
317 F77_FUNC (zffti, ZFFTI) (npts, pwsave);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
318
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
319 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
320 {
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
321 for (octave_idx_type j = 0; j < howmany; j++)
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
322 {
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
323 OCTAVE_QUIT;
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
324
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
325 for (octave_idx_type l = 0; l < npts; l++)
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
326 prow[l] = retval ((l + k*npts)*stride + j*dist);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
327
7789
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7620
diff changeset
328 F77_FUNC (zfftf, ZFFTF) (npts, prow, pwsave);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
329
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
330 for (octave_idx_type l = 0; l < npts; l++)
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
331 retval ((l + k*npts)*stride + j*dist) = prow[l];
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
332 }
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
333 }
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
334
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
335 stride *= dv2(i);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
336 }
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 return retval;
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
339 }
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
340
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
341 ComplexNDArray
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
342 ComplexNDArray::ifourier2d (void) const
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
343 {
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
344 dim_vector dv = dims();
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
345 dim_vector dv2 (dv(0), dv(1));
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
346 int rank = 2;
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
347 ComplexNDArray retval (*this);
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
348 octave_idx_type stride = 1;
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
349
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
350 for (int i = 0; i < rank; i++)
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
351 {
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
352 octave_idx_type npts = dv2(i);
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
353 octave_idx_type nn = 4*npts+15;
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
354 Array<Complex> wsave (nn);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
355 Complex *pwsave = wsave.fortran_vec ();
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
356 Array<Complex> row (npts);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
357 Complex *prow = row.fortran_vec ();
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
358
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
359 octave_idx_type howmany = numel () / npts;
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
360 howmany = (stride == 1 ? howmany :
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
361 (howmany > stride ? stride : howmany));
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
362 octave_idx_type nloop = (stride == 1 ? 1 : numel () / npts / stride);
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
363 octave_idx_type dist = (stride == 1 ? npts : 1);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
364
7789
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7620
diff changeset
365 F77_FUNC (zffti, ZFFTI) (npts, pwsave);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
366
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
367 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
368 {
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
369 for (octave_idx_type j = 0; j < howmany; j++)
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
370 {
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
371 OCTAVE_QUIT;
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
372
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
373 for (octave_idx_type l = 0; l < npts; l++)
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
374 prow[l] = retval ((l + k*npts)*stride + j*dist);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
375
7789
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7620
diff changeset
376 F77_FUNC (zfftb, ZFFTB) (npts, prow, pwsave);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
377
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
378 for (octave_idx_type l = 0; l < npts; l++)
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
379 retval ((l + k*npts)*stride + j*dist) = prow[l] /
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
380 static_cast<double> (npts);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
381 }
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
382 }
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
383
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
384 stride *= dv2(i);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
385 }
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 return retval;
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
388 }
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
389
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
390 ComplexNDArray
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
391 ComplexNDArray::fourierNd (void) const
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
392 {
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
393 dim_vector dv = dims ();
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
394 int rank = dv.length ();
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
395 ComplexNDArray retval (*this);
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
396 octave_idx_type stride = 1;
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
397
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
398 for (int i = 0; i < rank; i++)
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
399 {
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
400 octave_idx_type npts = dv(i);
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
401 octave_idx_type nn = 4*npts+15;
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
402 Array<Complex> wsave (nn);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
403 Complex *pwsave = wsave.fortran_vec ();
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
404 Array<Complex> row (npts);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
405 Complex *prow = row.fortran_vec ();
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
406
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
407 octave_idx_type howmany = numel () / npts;
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
408 howmany = (stride == 1 ? howmany :
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
409 (howmany > stride ? stride : howmany));
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
410 octave_idx_type nloop = (stride == 1 ? 1 : numel () / npts / stride);
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
411 octave_idx_type dist = (stride == 1 ? npts : 1);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
412
7789
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7620
diff changeset
413 F77_FUNC (zffti, ZFFTI) (npts, pwsave);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
414
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
415 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
416 {
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
417 for (octave_idx_type j = 0; j < howmany; j++)
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
418 {
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
419 OCTAVE_QUIT;
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
420
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
421 for (octave_idx_type l = 0; l < npts; l++)
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
422 prow[l] = retval ((l + k*npts)*stride + j*dist);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
423
7789
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7620
diff changeset
424 F77_FUNC (zfftf, ZFFTF) (npts, prow, pwsave);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
425
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
426 for (octave_idx_type l = 0; l < npts; l++)
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
427 retval ((l + k*npts)*stride + j*dist) = prow[l];
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
428 }
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
429 }
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 stride *= dv(i);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
432 }
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
433
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
434 return retval;
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
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
437 ComplexNDArray
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
438 ComplexNDArray::ifourierNd (void) const
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
439 {
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
440 dim_vector dv = dims ();
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
441 int rank = dv.length ();
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
442 ComplexNDArray retval (*this);
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
443 octave_idx_type stride = 1;
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
444
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
445 for (int i = 0; i < rank; i++)
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
446 {
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
447 octave_idx_type npts = dv(i);
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
448 octave_idx_type nn = 4*npts+15;
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
449 Array<Complex> wsave (nn);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
450 Complex *pwsave = wsave.fortran_vec ();
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
451 Array<Complex> row (npts);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
452 Complex *prow = row.fortran_vec ();
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
453
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
454 octave_idx_type howmany = numel () / npts;
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
455 howmany = (stride == 1 ? howmany :
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
456 (howmany > stride ? stride : howmany));
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
457 octave_idx_type nloop = (stride == 1 ? 1 : numel () / npts / stride);
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
458 octave_idx_type dist = (stride == 1 ? npts : 1);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
459
7789
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7620
diff changeset
460 F77_FUNC (zffti, ZFFTI) (npts, pwsave);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
461
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
462 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
463 {
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
464 for (octave_idx_type j = 0; j < howmany; j++)
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
465 {
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
466 OCTAVE_QUIT;
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
467
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
468 for (octave_idx_type l = 0; l < npts; l++)
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
469 prow[l] = retval ((l + k*npts)*stride + j*dist);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
470
7789
82be108cc558 First attempt at single precision tyeps
David Bateman <dbateman@free.fr>
parents: 7620
diff changeset
471 F77_FUNC (zfftb, ZFFTB) (npts, prow, pwsave);
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
472
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
473 for (octave_idx_type l = 0; l < npts; l++)
4773
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
474 retval ((l + k*npts)*stride + j*dist) = prow[l] /
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
475 static_cast<double> (npts);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
476 }
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
477 }
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 stride *= dv(i);
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
480 }
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
481
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
482 return retval;
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
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
485 #endif
ccfbd6047a54 [project @ 2004-02-16 19:02:32 by jwe]
jwe
parents: 4770
diff changeset
486
4543
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4532
diff changeset
487 // unary operations
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4532
diff changeset
488
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4532
diff changeset
489 boolNDArray
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4532
diff changeset
490 ComplexNDArray::operator ! (void) const
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4532
diff changeset
491 {
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4532
diff changeset
492 boolNDArray b (dims ());
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4532
diff changeset
493
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
494 for (octave_idx_type i = 0; i < length (); i++)
5139
f2858bbf0277 [project @ 2005-02-10 14:08:29 by jwe]
jwe
parents: 5110
diff changeset
495 b.elem (i) = elem (i) == 0.0;
4543
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4532
diff changeset
496
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4532
diff changeset
497 return b;
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4532
diff changeset
498 }
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4532
diff changeset
499
5775
ace8d8d26933 [project @ 2006-04-24 19:13:06 by jwe]
jwe
parents: 5389
diff changeset
500 // FIXME -- this is not quite the right thing.
4514
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
501
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
502 bool
7922
935be827eaf8 error for NaN values in & and | expressions
John W. Eaton <jwe@octave.org>
parents: 7789
diff changeset
503 ComplexNDArray::any_element_is_nan (void) const
935be827eaf8 error for NaN values in & and | expressions
John W. Eaton <jwe@octave.org>
parents: 7789
diff changeset
504 {
935be827eaf8 error for NaN values in & and | expressions
John W. Eaton <jwe@octave.org>
parents: 7789
diff changeset
505 octave_idx_type nel = nelem ();
935be827eaf8 error for NaN values in & and | expressions
John W. Eaton <jwe@octave.org>
parents: 7789
diff changeset
506
935be827eaf8 error for NaN values in & and | expressions
John W. Eaton <jwe@octave.org>
parents: 7789
diff changeset
507 for (octave_idx_type i = 0; i < nel; i++)
935be827eaf8 error for NaN values in & and | expressions
John W. Eaton <jwe@octave.org>
parents: 7789
diff changeset
508 {
935be827eaf8 error for NaN values in & and | expressions
John W. Eaton <jwe@octave.org>
parents: 7789
diff changeset
509 Complex val = elem (i);
935be827eaf8 error for NaN values in & and | expressions
John W. Eaton <jwe@octave.org>
parents: 7789
diff changeset
510 if (xisnan (val))
935be827eaf8 error for NaN values in & and | expressions
John W. Eaton <jwe@octave.org>
parents: 7789
diff changeset
511 return true;
935be827eaf8 error for NaN values in & and | expressions
John W. Eaton <jwe@octave.org>
parents: 7789
diff changeset
512 }
935be827eaf8 error for NaN values in & and | expressions
John W. Eaton <jwe@octave.org>
parents: 7789
diff changeset
513 return false;
935be827eaf8 error for NaN values in & and | expressions
John W. Eaton <jwe@octave.org>
parents: 7789
diff changeset
514 }
935be827eaf8 error for NaN values in & and | expressions
John W. Eaton <jwe@octave.org>
parents: 7789
diff changeset
515
935be827eaf8 error for NaN values in & and | expressions
John W. Eaton <jwe@octave.org>
parents: 7789
diff changeset
516 bool
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
517 ComplexNDArray::any_element_is_inf_or_nan (void) const
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
518 {
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
519 octave_idx_type nel = nelem ();
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
520
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
521 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
522 {
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
523 Complex val = elem (i);
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
524 if (xisinf (val) || xisnan (val))
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
525 return true;
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
526 }
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
527 return false;
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
528 }
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
529
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
530 // Return true if no elements have imaginary components.
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
531
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
532 bool
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
533 ComplexNDArray::all_elements_are_real (void) const
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
534 {
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
535 octave_idx_type nel = nelem ();
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
536
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
537 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
538 {
5260
deed800e7bef [project @ 2005-03-30 23:18:58 by jwe]
jwe
parents: 5164
diff changeset
539 double ip = std::imag (elem (i));
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
540
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
541 if (ip != 0.0 || lo_ieee_signbit (ip))
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
542 return false;
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
543 }
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
544
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
545 return true;
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
546 }
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
547
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
548 // Return nonzero if any element of CM has a non-integer real or
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
549 // imaginary part. Also extract the largest and smallest (real or
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
550 // imaginary) values and return them in MAX_VAL and MIN_VAL.
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
551
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
552 bool
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
553 ComplexNDArray::all_integers (double& max_val, double& min_val) const
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
554 {
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
555 octave_idx_type nel = nelem ();
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
556
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
557 if (nel > 0)
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
558 {
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
559 Complex val = elem (0);
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
560
5260
deed800e7bef [project @ 2005-03-30 23:18:58 by jwe]
jwe
parents: 5164
diff changeset
561 double r_val = std::real (val);
deed800e7bef [project @ 2005-03-30 23:18:58 by jwe]
jwe
parents: 5164
diff changeset
562 double i_val = std::imag (val);
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
563
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
564 max_val = r_val;
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
565 min_val = r_val;
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
566
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
567 if (i_val > max_val)
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
568 max_val = i_val;
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
569
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
570 if (i_val < max_val)
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
571 min_val = i_val;
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
572 }
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
573 else
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
574 return false;
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
575
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
576 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
577 {
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
578 Complex val = elem (i);
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
579
5260
deed800e7bef [project @ 2005-03-30 23:18:58 by jwe]
jwe
parents: 5164
diff changeset
580 double r_val = std::real (val);
deed800e7bef [project @ 2005-03-30 23:18:58 by jwe]
jwe
parents: 5164
diff changeset
581 double i_val = std::imag (val);
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
582
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
583 if (r_val > max_val)
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
584 max_val = r_val;
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
585
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
586 if (i_val > max_val)
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
587 max_val = i_val;
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
588
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
589 if (r_val < min_val)
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
590 min_val = r_val;
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
591
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
592 if (i_val < min_val)
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
593 min_val = i_val;
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
594
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
595 if (D_NINT (r_val) != r_val || D_NINT (i_val) != i_val)
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
596 return false;
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
597 }
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
598
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
599 return true;
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
600 }
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
601
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
602 bool
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
603 ComplexNDArray::too_large_for_float (void) const
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
604 {
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
605 octave_idx_type nel = nelem ();
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
606
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
607 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
608 {
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
609 Complex val = elem (i);
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
610
5260
deed800e7bef [project @ 2005-03-30 23:18:58 by jwe]
jwe
parents: 5164
diff changeset
611 double r_val = std::real (val);
deed800e7bef [project @ 2005-03-30 23:18:58 by jwe]
jwe
parents: 5164
diff changeset
612 double i_val = std::imag (val);
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
613
5389
25c8956d2204 [project @ 2005-06-15 03:45:46 by jwe]
jwe
parents: 5387
diff changeset
614 if ((! (xisnan (r_val) || xisinf (r_val))
5387
5b00a8beb504 [project @ 2005-06-14 17:13:45 by jwe]
jwe
parents: 5307
diff changeset
615 && fabs (r_val) > FLT_MAX)
5389
25c8956d2204 [project @ 2005-06-15 03:45:46 by jwe]
jwe
parents: 5387
diff changeset
616 || (! (xisnan (i_val) || xisinf (i_val))
5387
5b00a8beb504 [project @ 2005-06-14 17:13:45 by jwe]
jwe
parents: 5307
diff changeset
617 && fabs (i_val) > FLT_MAX))
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
618 return true;
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
619 }
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
620
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
621 return false;
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
622 }
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
623
4556
773a21e4fce8 [project @ 2003-10-28 05:02:10 by jwe]
jwe
parents: 4543
diff changeset
624 boolNDArray
4514
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
625 ComplexNDArray::all (int dim) const
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
626 {
8743
1bd918cfb6e2 reimplement any & all using the new reduction code
Jaroslav Hajek <highegg@gmail.com>
parents: 8736
diff changeset
627 return do_mx_red_op<boolNDArray> (*this, dim, mx_inline_all);
4514
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
628 }
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
629
4556
773a21e4fce8 [project @ 2003-10-28 05:02:10 by jwe]
jwe
parents: 4543
diff changeset
630 boolNDArray
4514
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
631 ComplexNDArray::any (int dim) const
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
632 {
8743
1bd918cfb6e2 reimplement any & all using the new reduction code
Jaroslav Hajek <highegg@gmail.com>
parents: 8736
diff changeset
633 return do_mx_red_op<boolNDArray> (*this, dim, mx_inline_any);
4569
01e4957409a4 [project @ 2003-10-30 05:48:17 by jwe]
jwe
parents: 4563
diff changeset
634 }
01e4957409a4 [project @ 2003-10-30 05:48:17 by jwe]
jwe
parents: 4563
diff changeset
635
4584
f7697d703481 [project @ 2003-10-31 19:47:35 by jwe]
jwe
parents: 4569
diff changeset
636 ComplexNDArray
4569
01e4957409a4 [project @ 2003-10-30 05:48:17 by jwe]
jwe
parents: 4563
diff changeset
637 ComplexNDArray::cumprod (int dim) const
01e4957409a4 [project @ 2003-10-30 05:48:17 by jwe]
jwe
parents: 4563
diff changeset
638 {
8736
53b4fdeacc2e improve reduction functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8650
diff changeset
639 return do_mx_cum_op<ComplexNDArray> (*this, dim, mx_inline_cumprod);
4569
01e4957409a4 [project @ 2003-10-30 05:48:17 by jwe]
jwe
parents: 4563
diff changeset
640 }
01e4957409a4 [project @ 2003-10-30 05:48:17 by jwe]
jwe
parents: 4563
diff changeset
641
4584
f7697d703481 [project @ 2003-10-31 19:47:35 by jwe]
jwe
parents: 4569
diff changeset
642 ComplexNDArray
4569
01e4957409a4 [project @ 2003-10-30 05:48:17 by jwe]
jwe
parents: 4563
diff changeset
643 ComplexNDArray::cumsum (int dim) const
01e4957409a4 [project @ 2003-10-30 05:48:17 by jwe]
jwe
parents: 4563
diff changeset
644 {
8736
53b4fdeacc2e improve reduction functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8650
diff changeset
645 return do_mx_cum_op<ComplexNDArray> (*this, dim, mx_inline_cumsum);
4569
01e4957409a4 [project @ 2003-10-30 05:48:17 by jwe]
jwe
parents: 4563
diff changeset
646 }
01e4957409a4 [project @ 2003-10-30 05:48:17 by jwe]
jwe
parents: 4563
diff changeset
647
01e4957409a4 [project @ 2003-10-30 05:48:17 by jwe]
jwe
parents: 4563
diff changeset
648 ComplexNDArray
01e4957409a4 [project @ 2003-10-30 05:48:17 by jwe]
jwe
parents: 4563
diff changeset
649 ComplexNDArray::prod (int dim) const
01e4957409a4 [project @ 2003-10-30 05:48:17 by jwe]
jwe
parents: 4563
diff changeset
650 {
8736
53b4fdeacc2e improve reduction functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8650
diff changeset
651 return do_mx_red_op<ComplexNDArray> (*this, dim, mx_inline_prod);
53b4fdeacc2e improve reduction functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8650
diff changeset
652 }
53b4fdeacc2e improve reduction functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8650
diff changeset
653
53b4fdeacc2e improve reduction functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8650
diff changeset
654 ComplexNDArray
53b4fdeacc2e improve reduction functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8650
diff changeset
655 ComplexNDArray::sum (int dim) const
53b4fdeacc2e improve reduction functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8650
diff changeset
656 {
53b4fdeacc2e improve reduction functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8650
diff changeset
657 return do_mx_red_op<ComplexNDArray> (*this, dim, mx_inline_sum);
4569
01e4957409a4 [project @ 2003-10-30 05:48:17 by jwe]
jwe
parents: 4563
diff changeset
658 }
01e4957409a4 [project @ 2003-10-30 05:48:17 by jwe]
jwe
parents: 4563
diff changeset
659
01e4957409a4 [project @ 2003-10-30 05:48:17 by jwe]
jwe
parents: 4563
diff changeset
660 ComplexNDArray
01e4957409a4 [project @ 2003-10-30 05:48:17 by jwe]
jwe
parents: 4563
diff changeset
661 ComplexNDArray::sumsq (int dim) const
01e4957409a4 [project @ 2003-10-30 05:48:17 by jwe]
jwe
parents: 4563
diff changeset
662 {
8736
53b4fdeacc2e improve reduction functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8650
diff changeset
663 return do_mx_red_op<NDArray> (*this, dim, mx_inline_sumsq);
4569
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
4915
c638c144d4da [project @ 2004-07-23 19:01:22 by jwe]
jwe
parents: 4902
diff changeset
666 ComplexNDArray
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
667 ComplexNDArray::concat (const ComplexNDArray& rb, const Array<octave_idx_type>& ra_idx)
4915
c638c144d4da [project @ 2004-07-23 19:01:22 by jwe]
jwe
parents: 4902
diff changeset
668 {
4940
954cc2ba6a49 [project @ 2004-08-24 19:30:31 by jwe]
jwe
parents: 4915
diff changeset
669 if (rb.numel () > 0)
5073
e71be9c548f2 [project @ 2004-11-09 18:31:25 by jwe]
jwe
parents: 4940
diff changeset
670 insert (rb, ra_idx);
e71be9c548f2 [project @ 2004-11-09 18:31:25 by jwe]
jwe
parents: 4940
diff changeset
671 return *this;
4915
c638c144d4da [project @ 2004-07-23 19:01:22 by jwe]
jwe
parents: 4902
diff changeset
672 }
c638c144d4da [project @ 2004-07-23 19:01:22 by jwe]
jwe
parents: 4902
diff changeset
673
c638c144d4da [project @ 2004-07-23 19:01:22 by jwe]
jwe
parents: 4902
diff changeset
674 ComplexNDArray
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
675 ComplexNDArray::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
676 {
4915
c638c144d4da [project @ 2004-07-23 19:01:22 by jwe]
jwe
parents: 4902
diff changeset
677 ComplexNDArray tmp (rb);
4940
954cc2ba6a49 [project @ 2004-08-24 19:30:31 by jwe]
jwe
parents: 4915
diff changeset
678 if (rb.numel () > 0)
5073
e71be9c548f2 [project @ 2004-11-09 18:31:25 by jwe]
jwe
parents: 4940
diff changeset
679 insert (tmp, ra_idx);
e71be9c548f2 [project @ 2004-11-09 18:31:25 by jwe]
jwe
parents: 4940
diff changeset
680 return *this;
4915
c638c144d4da [project @ 2004-07-23 19:01:22 by jwe]
jwe
parents: 4902
diff changeset
681 }
c638c144d4da [project @ 2004-07-23 19:01:22 by jwe]
jwe
parents: 4902
diff changeset
682
c638c144d4da [project @ 2004-07-23 19:01:22 by jwe]
jwe
parents: 4902
diff changeset
683 ComplexNDArray
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
684 concat (NDArray& ra, ComplexNDArray& rb, const Array<octave_idx_type>& ra_idx)
4915
c638c144d4da [project @ 2004-07-23 19:01:22 by jwe]
jwe
parents: 4902
diff changeset
685 {
c638c144d4da [project @ 2004-07-23 19:01:22 by jwe]
jwe
parents: 4902
diff changeset
686 ComplexNDArray retval (ra);
4940
954cc2ba6a49 [project @ 2004-08-24 19:30:31 by jwe]
jwe
parents: 4915
diff changeset
687 if (rb.numel () > 0)
4915
c638c144d4da [project @ 2004-07-23 19:01:22 by jwe]
jwe
parents: 4902
diff changeset
688 retval.insert (rb, ra_idx);
c638c144d4da [project @ 2004-07-23 19:01:22 by jwe]
jwe
parents: 4902
diff changeset
689 return retval;
4758
a308566c8b42 [project @ 2004-02-13 23:01:34 by jwe]
jwe
parents: 4687
diff changeset
690 }
a308566c8b42 [project @ 2004-02-13 23:01:34 by jwe]
jwe
parents: 4687
diff changeset
691
4844
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
692 static const Complex Complex_NaN_result (octave_NaN, octave_NaN);
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 ComplexNDArray
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
695 ComplexNDArray::max (int dim) const
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
696 {
8751
9f7ce4bf7650 optimize min/max functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8743
diff changeset
697 return do_mx_minmax_op<ComplexNDArray> (*this, dim, mx_inline_max);
4844
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
698 }
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 ComplexNDArray
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
701 ComplexNDArray::max (ArrayN<octave_idx_type>& idx_arg, int dim) const
4844
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
702 {
8751
9f7ce4bf7650 optimize min/max functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8743
diff changeset
703 return do_mx_minmax_op<ComplexNDArray> (*this, idx_arg, dim, mx_inline_max);
4844
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
704 }
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
705
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
706 ComplexNDArray
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
707 ComplexNDArray::min (int dim) const
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
708 {
8751
9f7ce4bf7650 optimize min/max functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8743
diff changeset
709 return do_mx_minmax_op<ComplexNDArray> (*this, dim, mx_inline_min);
4844
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
710 }
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
711
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
712 ComplexNDArray
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
713 ComplexNDArray::min (ArrayN<octave_idx_type>& idx_arg, int dim) const
4844
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
714 {
8751
9f7ce4bf7650 optimize min/max functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8743
diff changeset
715 return do_mx_minmax_op<ComplexNDArray> (*this, idx_arg, dim, mx_inline_min);
4844
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
716 }
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
717
8777
724c0f46d9d4 implement cummin/cummax functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8774
diff changeset
718 ComplexNDArray
724c0f46d9d4 implement cummin/cummax functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8774
diff changeset
719 ComplexNDArray::cummax (int dim) const
724c0f46d9d4 implement cummin/cummax functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8774
diff changeset
720 {
724c0f46d9d4 implement cummin/cummax functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8774
diff changeset
721 return do_mx_cumminmax_op<ComplexNDArray> (*this, dim, mx_inline_cummax);
724c0f46d9d4 implement cummin/cummax functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8774
diff changeset
722 }
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 ComplexNDArray
724c0f46d9d4 implement cummin/cummax functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8774
diff changeset
725 ComplexNDArray::cummax (ArrayN<octave_idx_type>& idx_arg, int dim) const
724c0f46d9d4 implement cummin/cummax functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8774
diff changeset
726 {
724c0f46d9d4 implement cummin/cummax functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8774
diff changeset
727 return do_mx_cumminmax_op<ComplexNDArray> (*this, idx_arg, dim, mx_inline_cummax);
724c0f46d9d4 implement cummin/cummax functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8774
diff changeset
728 }
724c0f46d9d4 implement cummin/cummax functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8774
diff changeset
729
724c0f46d9d4 implement cummin/cummax functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8774
diff changeset
730 ComplexNDArray
724c0f46d9d4 implement cummin/cummax functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8774
diff changeset
731 ComplexNDArray::cummin (int dim) const
724c0f46d9d4 implement cummin/cummax functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8774
diff changeset
732 {
724c0f46d9d4 implement cummin/cummax functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8774
diff changeset
733 return do_mx_cumminmax_op<ComplexNDArray> (*this, dim, mx_inline_cummin);
724c0f46d9d4 implement cummin/cummax functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8774
diff changeset
734 }
724c0f46d9d4 implement cummin/cummax functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8774
diff changeset
735
724c0f46d9d4 implement cummin/cummax functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8774
diff changeset
736 ComplexNDArray
724c0f46d9d4 implement cummin/cummax functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8774
diff changeset
737 ComplexNDArray::cummin (ArrayN<octave_idx_type>& idx_arg, int dim) const
724c0f46d9d4 implement cummin/cummax functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8774
diff changeset
738 {
724c0f46d9d4 implement cummin/cummax functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8774
diff changeset
739 return do_mx_cumminmax_op<ComplexNDArray> (*this, idx_arg, dim, mx_inline_cummin);
724c0f46d9d4 implement cummin/cummax functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8774
diff changeset
740 }
724c0f46d9d4 implement cummin/cummax functions
Jaroslav Hajek <highegg@gmail.com>
parents: 8774
diff changeset
741
4634
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
742 NDArray
4569
01e4957409a4 [project @ 2003-10-30 05:48:17 by jwe]
jwe
parents: 4563
diff changeset
743 ComplexNDArray::abs (void) const
01e4957409a4 [project @ 2003-10-30 05:48:17 by jwe]
jwe
parents: 4563
diff changeset
744 {
8650
a1ae2aae903e abs,real,imag,conj: use code from mx-inlines rather than the generic map
Jaroslav Hajek <highegg@gmail.com>
parents: 8377
diff changeset
745 return NDArray (mx_inline_cabs_dup (data (), length ()),
a1ae2aae903e abs,real,imag,conj: use code from mx-inlines rather than the generic map
Jaroslav Hajek <highegg@gmail.com>
parents: 8377
diff changeset
746 dims ());
a1ae2aae903e abs,real,imag,conj: use code from mx-inlines rather than the generic map
Jaroslav Hajek <highegg@gmail.com>
parents: 8377
diff changeset
747 }
4634
79fe96966ca0 [project @ 2003-11-19 21:22:39 by jwe]
jwe
parents: 4588
diff changeset
748
8650
a1ae2aae903e abs,real,imag,conj: use code from mx-inlines rather than the generic map
Jaroslav Hajek <highegg@gmail.com>
parents: 8377
diff changeset
749 ComplexNDArray
a1ae2aae903e abs,real,imag,conj: use code from mx-inlines rather than the generic map
Jaroslav Hajek <highegg@gmail.com>
parents: 8377
diff changeset
750 conj (const ComplexNDArray& a)
a1ae2aae903e abs,real,imag,conj: use code from mx-inlines rather than the generic map
Jaroslav Hajek <highegg@gmail.com>
parents: 8377
diff changeset
751 {
a1ae2aae903e abs,real,imag,conj: use code from mx-inlines rather than the generic map
Jaroslav Hajek <highegg@gmail.com>
parents: 8377
diff changeset
752 return ComplexNDArray (mx_inline_conj_dup (a.data (), a.length ()),
a1ae2aae903e abs,real,imag,conj: use code from mx-inlines rather than the generic map
Jaroslav Hajek <highegg@gmail.com>
parents: 8377
diff changeset
753 a.dims ());
4514
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
754 }
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
755
4765
e941e1470d7b [project @ 2004-02-16 05:56:50 by jwe]
jwe
parents: 4762
diff changeset
756 ComplexNDArray&
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
757 ComplexNDArray::insert (const NDArray& a, octave_idx_type r, octave_idx_type c)
4765
e941e1470d7b [project @ 2004-02-16 05:56:50 by jwe]
jwe
parents: 4762
diff changeset
758 {
e941e1470d7b [project @ 2004-02-16 05:56:50 by jwe]
jwe
parents: 4762
diff changeset
759 dim_vector a_dv = a.dims ();
e941e1470d7b [project @ 2004-02-16 05:56:50 by jwe]
jwe
parents: 4762
diff changeset
760
e941e1470d7b [project @ 2004-02-16 05:56:50 by jwe]
jwe
parents: 4762
diff changeset
761 int n = a_dv.length ();
e941e1470d7b [project @ 2004-02-16 05:56:50 by jwe]
jwe
parents: 4762
diff changeset
762
e941e1470d7b [project @ 2004-02-16 05:56:50 by jwe]
jwe
parents: 4762
diff changeset
763 if (n == dimensions.length ())
e941e1470d7b [project @ 2004-02-16 05:56:50 by jwe]
jwe
parents: 4762
diff changeset
764 {
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
765 Array<octave_idx_type> a_ra_idx (a_dv.length (), 0);
4765
e941e1470d7b [project @ 2004-02-16 05:56:50 by jwe]
jwe
parents: 4762
diff changeset
766
e941e1470d7b [project @ 2004-02-16 05:56:50 by jwe]
jwe
parents: 4762
diff changeset
767 a_ra_idx.elem (0) = r;
e941e1470d7b [project @ 2004-02-16 05:56:50 by jwe]
jwe
parents: 4762
diff changeset
768 a_ra_idx.elem (1) = c;
e941e1470d7b [project @ 2004-02-16 05:56:50 by jwe]
jwe
parents: 4762
diff changeset
769
e941e1470d7b [project @ 2004-02-16 05:56:50 by jwe]
jwe
parents: 4762
diff changeset
770 for (int i = 0; i < n; i++)
e941e1470d7b [project @ 2004-02-16 05:56:50 by jwe]
jwe
parents: 4762
diff changeset
771 {
e941e1470d7b [project @ 2004-02-16 05:56:50 by jwe]
jwe
parents: 4762
diff changeset
772 if (a_ra_idx (i) < 0 || (a_ra_idx (i) + a_dv (i)) > dimensions (i))
e941e1470d7b [project @ 2004-02-16 05:56:50 by jwe]
jwe
parents: 4762
diff changeset
773 {
e941e1470d7b [project @ 2004-02-16 05:56:50 by jwe]
jwe
parents: 4762
diff changeset
774 (*current_liboctave_error_handler)
e941e1470d7b [project @ 2004-02-16 05:56:50 by jwe]
jwe
parents: 4762
diff changeset
775 ("Array<T>::insert: range error for insert");
e941e1470d7b [project @ 2004-02-16 05:56:50 by jwe]
jwe
parents: 4762
diff changeset
776 return *this;
e941e1470d7b [project @ 2004-02-16 05:56:50 by jwe]
jwe
parents: 4762
diff changeset
777 }
e941e1470d7b [project @ 2004-02-16 05:56:50 by jwe]
jwe
parents: 4762
diff changeset
778 }
e941e1470d7b [project @ 2004-02-16 05:56:50 by jwe]
jwe
parents: 4762
diff changeset
779
e941e1470d7b [project @ 2004-02-16 05:56:50 by jwe]
jwe
parents: 4762
diff changeset
780 a_ra_idx.elem (0) = 0;
e941e1470d7b [project @ 2004-02-16 05:56:50 by jwe]
jwe
parents: 4762
diff changeset
781 a_ra_idx.elem (1) = 0;
e941e1470d7b [project @ 2004-02-16 05:56:50 by jwe]
jwe
parents: 4762
diff changeset
782
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
783 octave_idx_type n_elt = a.numel ();
4765
e941e1470d7b [project @ 2004-02-16 05:56:50 by jwe]
jwe
parents: 4762
diff changeset
784
e941e1470d7b [project @ 2004-02-16 05:56:50 by jwe]
jwe
parents: 4762
diff changeset
785 // IS make_unique () NECCESSARY HERE??
e941e1470d7b [project @ 2004-02-16 05:56:50 by jwe]
jwe
parents: 4762
diff changeset
786
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
787 for (octave_idx_type i = 0; i < n_elt; i++)
4765
e941e1470d7b [project @ 2004-02-16 05:56:50 by jwe]
jwe
parents: 4762
diff changeset
788 {
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
789 Array<octave_idx_type> ra_idx = a_ra_idx;
4765
e941e1470d7b [project @ 2004-02-16 05:56:50 by jwe]
jwe
parents: 4762
diff changeset
790
e941e1470d7b [project @ 2004-02-16 05:56:50 by jwe]
jwe
parents: 4762
diff changeset
791 ra_idx.elem (0) = a_ra_idx (0) + r;
e941e1470d7b [project @ 2004-02-16 05:56:50 by jwe]
jwe
parents: 4762
diff changeset
792 ra_idx.elem (1) = a_ra_idx (1) + c;
e941e1470d7b [project @ 2004-02-16 05:56:50 by jwe]
jwe
parents: 4762
diff changeset
793
e941e1470d7b [project @ 2004-02-16 05:56:50 by jwe]
jwe
parents: 4762
diff changeset
794 elem (ra_idx) = a.elem (a_ra_idx);
e941e1470d7b [project @ 2004-02-16 05:56:50 by jwe]
jwe
parents: 4762
diff changeset
795
e941e1470d7b [project @ 2004-02-16 05:56:50 by jwe]
jwe
parents: 4762
diff changeset
796 increment_index (a_ra_idx, a_dv);
e941e1470d7b [project @ 2004-02-16 05:56:50 by jwe]
jwe
parents: 4762
diff changeset
797 }
e941e1470d7b [project @ 2004-02-16 05:56:50 by jwe]
jwe
parents: 4762
diff changeset
798 }
e941e1470d7b [project @ 2004-02-16 05:56:50 by jwe]
jwe
parents: 4762
diff changeset
799 else
e941e1470d7b [project @ 2004-02-16 05:56:50 by jwe]
jwe
parents: 4762
diff changeset
800 (*current_liboctave_error_handler)
e941e1470d7b [project @ 2004-02-16 05:56:50 by jwe]
jwe
parents: 4762
diff changeset
801 ("Array<T>::insert: invalid indexing operation");
e941e1470d7b [project @ 2004-02-16 05:56:50 by jwe]
jwe
parents: 4762
diff changeset
802
e941e1470d7b [project @ 2004-02-16 05:56:50 by jwe]
jwe
parents: 4762
diff changeset
803 return *this;
e941e1470d7b [project @ 2004-02-16 05:56:50 by jwe]
jwe
parents: 4762
diff changeset
804 }
e941e1470d7b [project @ 2004-02-16 05:56:50 by jwe]
jwe
parents: 4762
diff changeset
805
e941e1470d7b [project @ 2004-02-16 05:56:50 by jwe]
jwe
parents: 4762
diff changeset
806 ComplexNDArray&
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
807 ComplexNDArray::insert (const ComplexNDArray& a, octave_idx_type r, octave_idx_type c)
4765
e941e1470d7b [project @ 2004-02-16 05:56:50 by jwe]
jwe
parents: 4762
diff changeset
808 {
e941e1470d7b [project @ 2004-02-16 05:56:50 by jwe]
jwe
parents: 4762
diff changeset
809 Array<Complex>::insert (a, r, c);
e941e1470d7b [project @ 2004-02-16 05:56:50 by jwe]
jwe
parents: 4762
diff changeset
810 return *this;
e941e1470d7b [project @ 2004-02-16 05:56:50 by jwe]
jwe
parents: 4762
diff changeset
811 }
e941e1470d7b [project @ 2004-02-16 05:56:50 by jwe]
jwe
parents: 4762
diff changeset
812
4915
c638c144d4da [project @ 2004-07-23 19:01:22 by jwe]
jwe
parents: 4902
diff changeset
813 ComplexNDArray&
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
814 ComplexNDArray::insert (const ComplexNDArray& a, const Array<octave_idx_type>& ra_idx)
4915
c638c144d4da [project @ 2004-07-23 19:01:22 by jwe]
jwe
parents: 4902
diff changeset
815 {
c638c144d4da [project @ 2004-07-23 19:01:22 by jwe]
jwe
parents: 4902
diff changeset
816 Array<Complex>::insert (a, ra_idx);
c638c144d4da [project @ 2004-07-23 19:01:22 by jwe]
jwe
parents: 4902
diff changeset
817 return *this;
c638c144d4da [project @ 2004-07-23 19:01:22 by jwe]
jwe
parents: 4902
diff changeset
818 }
c638c144d4da [project @ 2004-07-23 19:01:22 by jwe]
jwe
parents: 4902
diff changeset
819
4514
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
820 ComplexMatrix
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
821 ComplexNDArray::matrix_value (void) const
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
822 {
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
823 ComplexMatrix retval;
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
824
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
825 int nd = ndims ();
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
826
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
827 switch (nd)
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
828 {
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
829 case 1:
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
830 retval = ComplexMatrix (Array2<Complex> (*this, dimensions(0), 1));
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
831 break;
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
832
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
833 case 2:
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
834 retval = ComplexMatrix (Array2<Complex> (*this, dimensions(0),
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
835 dimensions(1)));
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
836 break;
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
837
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
838 default:
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
839 (*current_liboctave_error_handler)
4770
ef5e598f099b [project @ 2004-02-16 16:22:43 by jwe]
jwe
parents: 4765
diff changeset
840 ("invalid conversion of ComplexNDArray to ComplexMatrix");
4514
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
841 break;
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
842 }
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
843
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
844 return retval;
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
845 }
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
846
4532
01ee68d18069 [project @ 2003-10-10 00:49:54 by jwe]
jwe
parents: 4514
diff changeset
847 void
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
848 ComplexNDArray::increment_index (Array<octave_idx_type>& ra_idx,
4532
01ee68d18069 [project @ 2003-10-10 00:49:54 by jwe]
jwe
parents: 4514
diff changeset
849 const dim_vector& dimensions,
01ee68d18069 [project @ 2003-10-10 00:49:54 by jwe]
jwe
parents: 4514
diff changeset
850 int start_dimension)
01ee68d18069 [project @ 2003-10-10 00:49:54 by jwe]
jwe
parents: 4514
diff changeset
851 {
01ee68d18069 [project @ 2003-10-10 00:49:54 by jwe]
jwe
parents: 4514
diff changeset
852 ::increment_index (ra_idx, dimensions, start_dimension);
01ee68d18069 [project @ 2003-10-10 00:49:54 by jwe]
jwe
parents: 4514
diff changeset
853 }
01ee68d18069 [project @ 2003-10-10 00:49:54 by jwe]
jwe
parents: 4514
diff changeset
854
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
855 octave_idx_type
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
856 ComplexNDArray::compute_index (Array<octave_idx_type>& ra_idx,
4556
773a21e4fce8 [project @ 2003-10-28 05:02:10 by jwe]
jwe
parents: 4543
diff changeset
857 const dim_vector& dimensions)
773a21e4fce8 [project @ 2003-10-28 05:02:10 by jwe]
jwe
parents: 4543
diff changeset
858 {
773a21e4fce8 [project @ 2003-10-28 05:02:10 by jwe]
jwe
parents: 4543
diff changeset
859 return ::compute_index (ra_idx, dimensions);
773a21e4fce8 [project @ 2003-10-28 05:02:10 by jwe]
jwe
parents: 4543
diff changeset
860 }
773a21e4fce8 [project @ 2003-10-28 05:02:10 by jwe]
jwe
parents: 4543
diff changeset
861
7620
36594d5bbe13 Move diag function into the octave_value class
David Bateman <dbateman@free.fr>
parents: 7600
diff changeset
862 ComplexNDArray
36594d5bbe13 Move diag function into the octave_value class
David Bateman <dbateman@free.fr>
parents: 7600
diff changeset
863 ComplexNDArray::diag (octave_idx_type k) const
36594d5bbe13 Move diag function into the octave_value class
David Bateman <dbateman@free.fr>
parents: 7600
diff changeset
864 {
36594d5bbe13 Move diag function into the octave_value class
David Bateman <dbateman@free.fr>
parents: 7600
diff changeset
865 return MArrayN<Complex>::diag (k);
36594d5bbe13 Move diag function into the octave_value class
David Bateman <dbateman@free.fr>
parents: 7600
diff changeset
866 }
36594d5bbe13 Move diag function into the octave_value class
David Bateman <dbateman@free.fr>
parents: 7600
diff changeset
867
7503
8c32f95c2639 convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
868 NDArray
8c32f95c2639 convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
869 ComplexNDArray::map (dmapper fcn) const
8c32f95c2639 convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
870 {
8c32f95c2639 convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
871 return MArrayN<Complex>::map<double> (func_ptr (fcn));
8c32f95c2639 convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
872 }
8c32f95c2639 convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
873
8c32f95c2639 convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
874 ComplexNDArray
8c32f95c2639 convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
875 ComplexNDArray::map (cmapper fcn) const
8c32f95c2639 convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
876 {
8c32f95c2639 convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
877 return MArrayN<Complex>::map<Complex> (func_ptr (fcn));
8c32f95c2639 convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
878 }
8c32f95c2639 convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
879
8c32f95c2639 convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
880 boolNDArray
8c32f95c2639 convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
881 ComplexNDArray::map (bmapper fcn) const
8c32f95c2639 convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
882 {
8c32f95c2639 convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
883 return MArrayN<Complex>::map<bool> (func_ptr (fcn));
8c32f95c2639 convert mapper functions to new format
David Bateman <dbateman@free.fr>
parents: 7017
diff changeset
884 }
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
885
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
886 // This contains no information on the array structure !!!
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
887 std::ostream&
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
888 operator << (std::ostream& os, const ComplexNDArray& a)
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
889 {
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
890 octave_idx_type nel = a.nelem ();
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
891
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
892 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
893 {
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
894 os << " ";
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
895 octave_write_complex (os, a.elem (i));
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
896 os << "\n";
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
897 }
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
898 return os;
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
899 }
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
900
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
901 std::istream&
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
902 operator >> (std::istream& is, ComplexNDArray& a)
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
903 {
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
904 octave_idx_type nel = a.nelem ();
4687
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
905
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
906 if (nel < 1 )
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
907 is.clear (std::ios::badbit);
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
908 else
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
909 {
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
910 Complex tmp;
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 5260
diff changeset
911 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
912 {
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
913 tmp = octave_read_complex (is);
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
914 if (is)
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
915 a.elem (i) = tmp;
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
916 else
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
917 goto done;
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
918 }
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
919 }
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
920
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
921 done:
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
922
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
923 return is;
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
924 }
e95c86d48732 [project @ 2004-01-06 21:53:34 by jwe]
jwe
parents: 4634
diff changeset
925
5775
ace8d8d26933 [project @ 2006-04-24 19:13:06 by jwe]
jwe
parents: 5389
diff changeset
926 // FIXME -- it would be nice to share code among the min/max
4844
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
927 // functions below.
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
928
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
929 #define EMPTY_RETURN_CHECK(T) \
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
930 if (nel == 0) \
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
931 return T (dv);
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
932
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
933 ComplexNDArray
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
934 min (const Complex& c, const ComplexNDArray& m)
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
935 {
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
936 dim_vector dv = m.dims ();
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
937 int nel = dv.numel ();
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
938
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
939 EMPTY_RETURN_CHECK (ComplexNDArray);
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
940
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
941 ComplexNDArray result (dv);
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
942
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
943 for (int i = 0; i < nel; i++)
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
944 {
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
945 OCTAVE_QUIT;
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
946 result (i) = xmin (c, m (i));
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
947 }
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
948
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
949 return result;
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
950 }
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
951
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
952 ComplexNDArray
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
953 min (const ComplexNDArray& m, const Complex& c)
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
954 {
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
955 dim_vector dv = m.dims ();
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
956 int nel = dv.numel ();
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
957
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
958 EMPTY_RETURN_CHECK (ComplexNDArray);
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
959
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
960 ComplexNDArray result (dv);
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
961
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
962 for (int i = 0; i < nel; i++)
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
963 {
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
964 OCTAVE_QUIT;
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
965 result (i) = xmin (c, m (i));
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
966 }
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
967
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
968 return result;
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
969 }
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
970
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
971 ComplexNDArray
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
972 min (const ComplexNDArray& a, const ComplexNDArray& b)
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
973 {
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
974 dim_vector dv = a.dims ();
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
975 int nel = dv.numel ();
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
976
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
977 if (dv != b.dims ())
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
978 {
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
979 (*current_liboctave_error_handler)
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
980 ("two-arg min expecting args of same size");
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
981 return ComplexNDArray ();
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
982 }
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
983
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
984 EMPTY_RETURN_CHECK (ComplexNDArray);
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
985
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
986 ComplexNDArray result (dv);
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
987
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
988 for (int i = 0; i < nel; i++)
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
989 {
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
990 OCTAVE_QUIT;
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
991 result (i) = xmin (a (i), b (i));
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
992 }
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
993
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
994 return result;
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
995 }
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
996
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
997 ComplexNDArray
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
998 max (const Complex& c, const ComplexNDArray& m)
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
999 {
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1000 dim_vector dv = m.dims ();
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1001 int nel = dv.numel ();
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1002
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1003 EMPTY_RETURN_CHECK (ComplexNDArray);
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1004
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1005 ComplexNDArray result (dv);
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1006
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1007 for (int i = 0; i < nel; i++)
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1008 {
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1009 OCTAVE_QUIT;
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1010 result (i) = xmax (c, m (i));
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1011 }
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1012
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1013 return result;
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1014 }
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1015
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1016 ComplexNDArray
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1017 max (const ComplexNDArray& m, const Complex& c)
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1018 {
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1019 dim_vector dv = m.dims ();
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1020 int nel = dv.numel ();
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1021
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1022 EMPTY_RETURN_CHECK (ComplexNDArray);
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1023
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1024 ComplexNDArray result (dv);
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1025
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1026 for (int i = 0; i < nel; i++)
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1027 {
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1028 OCTAVE_QUIT;
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1029 result (i) = xmax (c, m (i));
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1030 }
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1031
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1032 return result;
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1033 }
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1034
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1035 ComplexNDArray
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1036 max (const ComplexNDArray& a, const ComplexNDArray& b)
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1037 {
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1038 dim_vector dv = a.dims ();
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1039 int nel = dv.numel ();
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1040
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1041 if (dv != b.dims ())
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1042 {
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1043 (*current_liboctave_error_handler)
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1044 ("two-arg max expecting args of same size");
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1045 return ComplexNDArray ();
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1046 }
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1047
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1048 EMPTY_RETURN_CHECK (ComplexNDArray);
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1049
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1050 ComplexNDArray result (dv);
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1051
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1052 for (int i = 0; i < nel; i++)
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1053 {
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1054 OCTAVE_QUIT;
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1055 result (i) = xmax (a (i), b (i));
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1056 }
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1057
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1058 return result;
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1059 }
9f7ef92b50b0 [project @ 2004-04-02 17:26:53 by jwe]
jwe
parents: 4816
diff changeset
1060
5260
deed800e7bef [project @ 2005-03-30 23:18:58 by jwe]
jwe
parents: 5164
diff changeset
1061 NDS_CMP_OPS(ComplexNDArray, std::real, Complex, std::real)
4543
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4532
diff changeset
1062 NDS_BOOL_OPS(ComplexNDArray, Complex, 0.0)
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4532
diff changeset
1063
5260
deed800e7bef [project @ 2005-03-30 23:18:58 by jwe]
jwe
parents: 5164
diff changeset
1064 SND_CMP_OPS(Complex, std::real, ComplexNDArray, std::real)
4543
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4532
diff changeset
1065 SND_BOOL_OPS(Complex, ComplexNDArray, 0.0)
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4532
diff changeset
1066
5260
deed800e7bef [project @ 2005-03-30 23:18:58 by jwe]
jwe
parents: 5164
diff changeset
1067 NDND_CMP_OPS(ComplexNDArray, std::real, ComplexNDArray, std::real)
4543
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4532
diff changeset
1068 NDND_BOOL_OPS(ComplexNDArray, ComplexNDArray, 0.0)
79df15d4470c [project @ 2003-10-18 03:53:52 by jwe]
jwe
parents: 4532
diff changeset
1069
4514
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
1070 /*
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
1071 ;;; Local Variables: ***
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
1072 ;;; mode: C++ ***
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
1073 ;;; End: ***
8373b9b41eee [project @ 2003-09-19 21:47:10 by jwe]
jwe
parents:
diff changeset
1074 */